读书人

为什么2次取数组的数据不同?解决办法

发布时间: 2012-03-06 20:47:55 作者: rapoo

为什么2次取数组的数据不同?
代码:
procedure CreateGraphic(G:TGraph);
var
i,j:integer;
Stra:string;
begin
Form2.ADOQuery2.Active:= True;
Form2.ADOQuery2.First;
G.n:= Form2.ADOQuery2.RecordCount;
Form2.Memo1.Clear;
for i:= 0 to (G.n - 1) do
begin
G.Vexs[i]:= i;
Stra:= ' ';
for j:= 0 to (G.n - 1) do
begin
if IntToStr(Form2.ADOQuery2.Fields[j].AsInteger) = #0 THEN
G.Edges[i,j]:=1000
else
G.Edges[i,j]:= Form2.ADOQuery2.Fields[j].AsInteger;
Stra:=Stra + ' ' + IntToStr(G.Edges[i,j]);
end;
Form2.Memo1.Lines.Add(Stra);
Form2.ADOQuery2.Next;
end;

for i:= 0 to (G.n - 1) do
begin
Stra:= ' ';
for j:=0 to (G.n - 1)do
begin
Stra:=Stra + ' ' + IntToStr(G.Edges[i,j]);
end;
Form2.Memo1.Lines.Add(Stra);
end;
end;
结果:
0 0 10 0 30 100
0 0 5 0 0 0
0 0 0 50 0 0
0 0 0 0 0 10
0 0 0 20 0 60
0 10 0 0 0 0
14236776 1 2 3 4 5
0 0 5 0 0 0
0 0 0 50 0 0
0 0 0 0 0 10
0 0 0 20 0 60
0 10 0 0 0 0
为什么第2次输出的第一行是这样子的?

[解决办法]
begin
Stra:=Stra + ' ' + IntToStr(G.Edges[i,j]);
end;

所有的G.Edgres[0,j]和G.Edgres[i,0]都访问都越界了!

读书人网 >.NET

热点推荐