代码和函数定义如下,运行后会产生如题的错误,不知怎么解决,请高手指教!运行:
procedure TForm2.Button1Click(Sender: TObject);
var
G1:Tgraph;
v,t:integer;begin
  v:= StrToInt(Edit2.Text);//数字
  t:= StrToInt(Edit3.Text);//数字
  CreateGraphic(G1);
  ShortestPath(G1, v, t);
  Post(R,G1);
end;
函数定义:
procedure CreateGraphic(G:TGraph);
var
  i,j:integer;
begin
  Form2.ADOQuery2.Active:= True;
  Form2.ADOQuery2.First;
  G.n:= Form2.ADOQuery2.RecordCount;
  for i:= 0 to (G.n - 1)  do
    begin
      G.Vexs[i]:= i;
      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;        end;
      Form2.ADOQuery2.Next;
    end;    for i:= 0 to (G.n - 1)  do
    begin
      for j:= 0 to (G.n - 1) do
        begin
          if G.Edges[i,j] = 0 then G.Edges[i,j]:= 1000;        end;
    end;
end;
procedure ShortestPath(G:TGraph; v0,v1:integer);
var
i,j,v,k,min,Max: integer;
P: Array[0..39,0..39] of integer;
Final: Array[0..39] of boolean;
D: Tarr1;
begin
  
   Max:=0;
   for i:=0 to (G.n - 1) do
   begin
      D[i]:= G.Edges[v0,i];
      Final[i]:= False;
      for k:= 0 to (G.n - 1) do
        begin
          p[i,k]:= 0;
          if (D[i] < 1000) then
            begin
              P[i,v0]:= 1;
              P[i,i]:= 2;
            end;
        end;
   end;   D[v0]:= 0;
   final[v0]:= True;  for i:=0 to (G.n - 1) do
    begin
       min:=1000;
       for j:=0 to (G.n - 1) do
        begin
          if not final[j] then
            begin
              if D[j] < min then
                begin
                  v:= j;
                  min:= D[j];
                end
              else
              ShowMessage('路径信息可能有错误,请检查!');
            end;
        end;      final[v]:= True;      for j:=0 to (G.n - 1) do
        begin
            if (not final[j]) and ((min + G.Edges[v, j]) < (D[j])) then
              begin
                D[j]:= min + G.Edges[v, j];
                for k:= 0 to (G.n - 1) do
                begin
                  P[j,k]:=P[v,k];
                end;
                for k:= 0 to (G.n - 1) do     //取得最大的序号,
                  begin
                    if P[j, k] > Max then Max:= P[j, k];
                  end;
                p[j, j]:= Max +1;
              end;        end;
    end;    for k:= 0 to (G.n - 1) do
      begin
        R[k]:= P[v1,k];
      end;end;procedure Post(arr1:Tarr1;g1:Tgraph);
var
i,j,k:integer;
begin  for i:=0 to (g1.n - 1) do
  begin
    for j:= 0 to (g1.n - 1) do
      begin
        if arr1[j] = (i + 1) then
          begin
             k:= i + 1;
             Form2.ADOQuery1.AppendRecord([MyStr,k,0,1,0,j,1,1]);
          end;
      end;  end;
end;