我不想再用TLIST了,为什么能一次做完的事情非要分成两次完成
最近和VC++小组联合开发BS应用程序,我们这些用DELPHI做前台的
连动态数组都不会用,给他们传数据造成了一定的影响

解决方案 »

  1.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Array1: array of Integer;
    begin
      Array1 [1] := 100; // error
      SetLength (Array1, 100);
      Array1 [99] := 100; // OK
      ...
    end;
      

  2.   

    var 的时候不定义大小不就可以了吗?
    不知道楼主还有什么意图!不妨把问题说的明白些!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      Array1: array of Integer;
    begin
    //动态添加一个数组,然后设置它的值
      SetLength (Array1, Length(Array1)+1);
      Array1 [Length(Array1)-1] := 100;
       ...
    end;
      

  4.   

    var
      Array1: array of Integer;
    begin
      Array1 [1] := 100; // error
      SetLength (Array1, 100);
      Array1 [99] := 100; // OK
      ...
    end;我要的不是这种动态数组
    而是堆栈型的动态数组,比如我要找某个文件夹下所有的CAD文件,如果用你这种方法我得先找出有多少个CAD文件,设置好数组的长度,再回头找一便,把文件存入数组中
    如果我能事先不定义长度,直接读直接存,那么只需要一便就可以了 
    不知道我说明白没有
    有劳高手了 
      

  5.   


    ======================================================================
    var
      Array1: array of Integer;
    begin
      Array1 [1] := 100; // error
      SetLength (Array1, 100);
      Array1 [99] := 100; // OK
      ...
    end;我要的不是这种动态数组
    而是堆栈型的动态数组,比如我要找某个文件夹下所有的CAD文件,如果用你这种方法我得先找出有多少个CAD文件,设置好数组的长度,再回头找一便,把文件存入数组中
    如果我能事先不定义长度,直接读直接存,那么只需要一便就可以了 
    不知道我说明白没有
    有劳高手了 ===========================
      

  6.   

    问题在前面没说清楚  SORRY
    希望在12点前能看到答案 谢谢
      

  7.   

    那你用VC写个DLL吧
    C++的 vector等 很多都可以满足你的要求。
      

  8.   

    type
      TMyArray=array or array of integer;
    var
      MyArray=TMyArray;  SetLength(MyArray,10,10);  MyArray[0,0]:=1;  SetLength(MyArray,0);
      

  9.   

    那你只能用TList了啊!不然你还想用什么!而且你说的堆栈型数组是错误的,应该是堆数组,而不是栈数组!
      

  10.   

    对,是堆数组 小子才疏学浅   Linux2001(恋人不如自恋) ,DELPHI中真的没有这种数组吗?
      

  11.   

    我覺得你需要的是一個鏈表, 
    VC, delphi 應該都是一樣的, 你要先分配內存, 再寫入數據, 
    如你所說的, 用什麼表都來好, 只不過系統幫你做了些工作而已,
    并不會節省Cpu時間!>>如果用你这种方法我得先找出有多少个CAD文件,设置好数组的长度,再回头找一便,把文>>件存入数组中
    >>如果我能事先不定义长度,直接读直接存,那么只需要一便就可以了 
    如你這種情況, 其實, 可以一開始
    setLength設置數組長一點, 然後, 再SetLength一次成正确的長度就可var
      Array1: array of Integer;
    begin
      SetLength (Array1, 100);
      Array1 [99] := 100; // OK
      Array1 [10] := 200;
      setLength(Array1, 11);
      showmessage(intToStr(Array1[10]));
    end;
      

  12.   

    如果先定义一个很大的数组,然后再根据实际需要来减小数组,恐怕有点浪费内存了。其实动态数组的维数是可以动态调整的。如var
      Array1: array of Integer;
    begin
      SetLength (Array1, 1);
      Array1 [0] := 100;
      SetLength (Array1, 2);
      Array1 [1] := 40;
      //...
      SetLength (Array1, 100);
      Array1 [99] := 500;
    end;所以你可以找到一个CAD文件,把Array1的维数加1来存放相应内容即可。
      

  13.   

    如果动态定义数组,你是可以一遍查找CAD文件,但是因为它要不停地划分系统内存,对系统开销是很大的!看一下这个:
    http://community.csdn.net/Expert/topic/3052/3052735.xml?temp=.5750391