function add(mGamelist:pGamelist):Boolean;
 begin  
mGamelist.sky:=mGamelist.sky+9;   
if mGamelist.sky>10 then    
begin      
result:=true;     
end;     
if mGamelist.sky<10 then    
begin      result:=true;     
end;    
mGamelist.X:=mGamelist.X+9;    
mGamelist.Y:=mGamelist.Y+9;    
mGamelist.Z:=mGamelist.Z+9;    
list.Add(mGamelist); //这里提示出错 ,但是希望不出错原因估计是泛型数组不支持这种操作吧    ///////mGamelist其实是一个指针 可以怎么才可以转换为可以让泛型数组可以接受的形式呢?/////    //////////////////貌似怎么写都不可以。。求写过的人或者知道的人 帮忙看下///// 

解决方案 »

  1.   

    你的TLIst是结构体的泛型容器,Add结构体指针,类型不对
      

  2.   

    list.Add(mGamelist); //这里提示出错 ,但是希望不出错原因估计是泛型数组不支持这种操作吧    ///////我知道是类型不对,可是我不知道怎么写  才是编译通过的。
    到底要怎么写才可以。头大啊
      

  3.   

    var
     List: TList<pGamelist>;
      

  4.   

    楼上的方法 有点邪恶啊,但是 这个list我还是要进行xxx:=list[0].xxx;和xxxx:=list[1]这样的操作,这种写法也支持么?
    感觉太邪恶了
      

  5.   

    pGamelist= ^TGamelist;//这里定义了指针
      TGamelist =packed record
      sky:Integer;
      X: Single;
      Y: Single;
      Z: Single;
      get:Boolean;
      pGamelist:Pointer; //把指针放在结构体里面 不知道是不是可以正常使用
     end;
    ...
    List: TList<TGamelist>;//这里是定义的泛型数组你的数据结果定义挺奇怪的,看上面的结构中定义了一个pGamelist:Pointer; 你是想定义一个链表吗?既然要定义链表为啥还要用List: TList<TGamelist>;
      

  6.   

    list.Add(mGamelist); //这里提示出错 ,但是希望不出错原因估计是泛型数组不支持这种操作吧
    这样当然出错应该用:
    list.Add(mGamelist^);
      

  7.   

    http://bbs.csdn.net/topics/390397634
    参考下这个,嘿嘿
      

  8.   

    感谢下这里 使用成功 顺便问下
    要是想在 add()这个过程实现 对list数据的操作是怎么实现的?   add(@list[0]); //这样的写法是错误 的 要怎么写?
      

  9.   

    add(list[0].pGamelist); //这样也不知道能不能正确添加。  
    这个代码也是错的 重新分配了指针  直接导致程序编译通过 运行出现 错误提示 也就是那个指针 不是结构体指针 是编译器重新分配的。
      

  10.   

    不是想定义链表 是想得到这个结构体指针 想获得泛型list的里面的单个元素 比如list[0]的指针 然后通过add实现对 list[0]的操作  你明白我的意思么?
    比如 add(@list[0]);  虽然这么写编译错误  但是 我的目的就是实现这个操作
      

  11.   

    你得到指针做啥?如果要往TList中加入的是指针,那么当然要定义为:
    lst: TList<pGamelist>;并且你在加入的时候,不是定义为一个实例,
    ceshi:TGamelist;
     ceshitwo:TGamelist;
    这里不应该这样定义,而是定义为
    ceshi:pGamelist;
     ceshitwo:pGamelist;使用时创建:
    New(ceshi);
    New(ceshitow);
    ...
    list.Add(ceshi);
    ....