首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

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

2012-03-06 
为什么2次取数组的数据不同?代码:procedureCreateGraphic(G:TGraph)vari,j:integerStra:stringbeginFor

为什么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]都访问都越界了!

热点排行