关于数组的问题,请帮看看(50分)

  • 主题发起人 主题发起人 awryk63
  • 开始时间 开始时间
A

awryk63

Unregistered / Unconfirmed
GUEST, unregistred user!
我编了一段程序,编译不了,是不是动态数组有错?程序如下:
procedure TForm1.Button1Click(Sender: TObject);
var
fx:Textfile;
i,j,n,m:Integer;
a:array of array of Integer;
begin
n:=3;
m:=9;
SetLength(a,n,m);
AssignFile(fx,'aa.txt');
Reset(fx);
for i:=1 to n do
for j:=1 to m do
Read(fx,a[i,j]);
Edit1.Text:=IntToStr(a[3,6]);
closefile(fx);
end;

文件aa.txt的内容如下:
1 2 3 4 5 6 7 8 9
2 3 4 5 6 7 8 9 1
3 4 5 6 7 8 9 1 2


[?][?][?][?][?][?][?][?][?][?][?][?][?][?][?]

 
没有错,可以编译通过
 
程序没有问题,但缺省情况数组下标从 0 开始,所以你程序运行要出错,应该改为:

for i:=0 to n-1 do
for j:=0 to m-1 do
Read(fx,a[i,j]);
Edit1.Text:=IntToStr(a[2,6]);
 
还是运行不了,我用的是delphi6,在Windows xp下编的.是不是与操作系统有关?
 
你是没有把相应的单元文件引入进来吧?
比如textfile....
还有,编译不了应该会报信息的,你的问题里面请描述清楚也好对症下药.
 
编译运行时出现的错误如下:
标题:
Debugger Exception Notification
内容:
Project Project1.exe raised exception class EAccessViolation with message 'Access
violation at address 004044C8 in module'Project1.exe'.Read of address FFFFFFFB'.
Process stopped. Use Step or Run to continue.

请大侠指点。
 
那是因为你用了非法的地址
Olmany已经找出了你的问题了啊
 
哦,知道了,多谢大侠指点。



[:)][:)][:)][:)][:)][:)][:)][:)][:)][:)][:)]
 
后退
顶部