rtTClasses=Class
    arr:array of integer;     //可以吗?
end;在create里setlength(arr,20);  //可以吗?如果arr是指针,
TClasses=Class
    arr:PSingle;
end;GetMem(arr,sizeof(Single)*20);
我想访问这个Single数组中的第10个怎么访问?
用arr+10^:=100;      //这种没试过,可以嘛?
或者  arr^[10]:=100;  //但是这种总是报告 缺少identifier type的错误

解决方案 »

  1.   

    to brightyang:
         TStrings是基于string的字符串数组,这里主要是基于浮点数或者整数的,所以并不适用。能有其他办法吗?
      

  2.   

    sorry 看错了
    var
    s:PSingle;
    i:Single;
    begin
    GetMem(s,sizeof(arr)+1);
    i:=100;
    s^:=i;
    FreeMem(s);参考
    http://bbs.xiakexing.com/cgi-bin/topic.cgi?forum=37&topic=7&show=0
      

  3.   

    to hsmserver:
        首先感谢你对我问题的关注;
        但是你领会错偶的意思了吧?
        我的问题是:在类中声明了一个动态数组(这样声明可以吗?),然后在类的构造函数中调用SetLength对这个动态数组分配空间,在其他成员函数中试图访问这个数组中的元素:    TClass=Class
           arr:array of Single;      //可以在类中声明动态数组吗?
        end;
        
        constructor TClass.Create();
        begin
           SetLength(arr,100);      //为类中的动态数组分配空间是这样吗?
        end;    function TClass.Setarr():Integer;
        begin
           arr+10^:=100;           //欲访问arr[10]这个元素,
           arr^[10]:=100;          //这两种方式可以嘛?还是有其他的方式
        end;
    我是Delphi菜鸟,最近在修改一个C语言的程序到Delphi中,这些是其中遇到的问题,希望能帮忙解决
      

  4.   

    如果那样arr[10]就可以
    我是看你
    arr:PSingle; 
    GetMem(arr,sizeof(Single)*20); 
      

  5.   


    delphi中的数组访问也跟C的差不多,但delphi没有C那么强调指针。 
    delphi里的静态数组和动态数组有差别,访问静态数组的首地址要用取地址运算符@, 
    而动态数组则是直接用数组名(也即动态数组的数组名就是一个地址指针)。结贴,谢谢大家