var
MegerList: Variant;
i,j,ArrCount:integer;
begin
   ArrCount:=0 
for i := 0 to 2 do
    for j := 0 to 2 do          MegerList := VarArrayCreate([0,ArrCount], varVariant);
          MegerList[ArrCount] :=VarArrayOf([tt.Top+1,tt.Left+1,tt.Bottom,tt.Right]);
          inc(ArrCount);
    if  VarIsArray(MegerList) then   //megerd
    begin
      for I := VarArrayLowBound(MegerList, 1) to VarArrayHighBound(MegerList, 1) do
       begin
       showmessage(MegerList[i][1]);       end;
    end;
end;

解决方案 »

  1.   

    tt是什么??另外第一行 
      ArrCount:=0;
      

  2.   

    为什么不写规范一些呢?
    ArrCount:=0 少 ;
      

  3.   

    加上这ArrCount:=0 少 ;也没有用!出错在showmessage(MegerList[i][1]);
    程序更正:
    var
    MegerList: Variant;
    i,j,ArrCount:integer;
    begin
       ArrCount:=0; 
    for i := 0 to 2 do
        for j := 0 to 2 do
              MegerList := VarArrayCreate([0,ArrCount], varVariant);
              MegerList[ArrCount] :=VarArrayOf([i,j,i+1,j+1]);
              inc(ArrCount);
        if  VarIsArray(MegerList) then   //megerd
        begin
          for I := VarArrayLowBound(MegerList, 1) to VarArrayHighBound(MegerList, 1) do
           begin
           showmessage(MegerList[i][1]);
           end;
        end;
    end;
      

  4.   

    这段程序除了ArrCount:=0少;编译时没有错,
    但逻辑就不知道了,因为不知道你这段要做什么
    另外
     inc(ArrCount);
    在程序里面没有什么用处
      

  5.   

    TO:linzhengqun(风) 
    程序实现的目的:将(0,0,1,1)、(0,1,1,2)等等的数据放到MegerList中,然后再读出来:MegerList[i][1];不知你是否明白我的意思!在线!!!
      

  6.   

    procedure TForm1.Button55Click(Sender: TObject);
    var
      MegerList: Variant;
      i,j,ArrCount:integer;
    begin
      MegerList := VarArrayCreate([0,8], varVariant);  // 3*3  ArrCount :=0 ;
      for i := 0 to 2 do
        for j := 0 to 2 do
        begin
          //MegerList := VarArrayCreate([0,ArrCount], varVariant);
          MegerList[ArrCount] :=VarArrayOf([i,j,i+1,j+1]);
          inc(ArrCount);
        end;  if  VarIsArray(MegerList) then   //megerd
      begin
        for i := VarArrayLowBound(MegerList, 1) to VarArrayHighBound(MegerList, 1) do
        begin
         showmessage(IntToStr(i)+': '+FloatToStr(MegerList[i][0])+'/'+FloatToStr(MegerList[i][1])+'/'+FloatToStr(MegerList[i][2])+'/'+FloatToStr(MegerList[i][3]) );
        end;
      end;
    end;(注:是不是NI要的?)
      

  7.   

    不知你要的是不是这样的结果:var
    MegerList: Variant;
    i,j,ArrCount:integer;
    begin
       ArrCount:=0;
       MegerList := VarArrayCreate([0,8], varVariant);
      for i := 0 to 2 do
          for j := 0 to 2 do
          begin
            MegerList[ArrCount] :=VarArrayOf([i,j,i+1,j+1]);
            inc(ArrCount);
          end;    if  VarIsArray(MegerList) then   //megerd
        begin
          for I := VarArrayLowBound(MegerList, 1) to VarArrayHighBound(MegerList, 1) do
          begin
               Memo1.Text:=memo1.Text+' (';
             for j:=0 to 3 do
               Memo1.Text:=Memo1.Text+InttoStr(megerList[i][j]);
               Memo1.Text:=memo1.Text+')  ';
          end;
        end;
    end;
      

  8.   

    TO: cronuz(cronus) 
    MegerList := VarArrayCreate([0,8], varVariant);  // 3*3
    这个VarArrayCreate的长度无法确定,所以我用
    MegerList := VarArrayCreate([0,ArrCount], varVariant);来动态的设定他的长度。另外VarArrayCreate(([0,ArrCount], varVariant)中的ArrCount是不是可以数组的长度?
      

  9.   

    TO:linzhengqun(风)
    主要是这个VarArrayCreate的长度无法确定,肯定不是8,8只是我举例子想让大家好明白,没想到反倒误导了大家!^_^
      

  10.   

    TO: linzhengqun(风)
     for i := 0 to rowcount do
          for j := 0 to colcount do
          begin
          if ()then
         begin
            MegerList[ArrCount] :=VarArrayOf([i,j,i+1,j+1]);
            inc(ArrCount);
         end;
          end;
    如果程序这样!怎么确定条件,他的长度如何动态设定?
    MegerList是在满足if ()then的条件下才添加内容,所以无法确定!
      

  11.   

    hehe, 我和linzhengqun(风)的SOURCE不謀而和。// rowcount*colcount动态设定
    MegerList := VarArrayCreate([0,rowcount*colcount-1], varVariant);  
      

  12.   

    TO:cronuz(cronus) 
    MegerList := VarArrayCreate([0,rowcount*colcount-1], varVariant);这个我也想到了,  
    if ()then
         begin
            MegerList[ArrCount] :=VarArrayOf([i,j,i+1,j+1]);
            inc(ArrCount);
         end;
    但这样MegerList的空间会增加很多多余的空间
      

  13.   

    var
      Varr: Variant;
      i, j, Val: Integer;
    begin
      Val := 0;
      for i := 0 to 2 do
      begin
        for j := 0 to 2 do
        begin
          if Val = 0 then
            Varr := VarArrayCreate([0, Val + 1], varVariant)
          else
            VarArrayRedim(Varr,Val + 1);
          Varr[Val] := Inttostr(Val);
          inc(Val);
        end;
      end;
      for i := VarArrayLowBound(Varr,1) to VarArrayHighBound(Varr,1) do
        ShowMessage(Varr[i]);
    end;问题1:你重复创建了你的变体数组,却只给最新的也就是索引最大的写值
    问题2:你给各个变体数组里的个体写值时,不是写的是单数据,而又是一个具有4列的数据,当然无法显示
      

  14.   

    TO:risingsoft(一苇渡江)
    兄弟你说的非常正确,OK了。非常感谢!