如下的类:
type
  PtargetLevel=^TTargetLevel;
  TTargetLevel = class(TObject)
  private
    Count: Integer;
    M_RecNum: Integer;
    M_recPos: Integer;
    Plevel: array[0..Level_size] of PTargetLevel;//此处声明指向PtargetLevel的指针,形如C的链表。
  public
    constructor Create;
    destructor Destroy; override;
  end;
我在程序中用法:
        //pLevel[nCount]:[email protected];
        new(pLevel[nCount]);
        pLevel[nCount].M_RecNum:=nRecNum;//此处出错,内存错误。
        pLevel[nCount].M_recPos:=nRecPos;用new也不行,create也不行,都是内存XXX不能读写的错误。高手给指点迷睛。

解决方案 »

  1.   

    肯定是错误的啦
    你应该是这样:
    new(pLevel[nCount]); //首先nCount不能出界
    pLevel[nCount] := TTargetLevel.Create;
    pLevel[nCount].M_RecNum:=nRecNum;
    pLevel[nCount].M_recPos:=nRecPos;这样肯定没错误!试试,给分吧! :)
      

  2.   

    楼上的,你给出的本来就是错误的,pLevel[nCount]是指针,TTargetLevel.Create;是类,我按你的思想改成如下的也不行。
            new(pLevel[nCount]);
            pLevel[nCount]:[email protected];
            //strcopy(pLevel[nCount].Name,LevelText);
            pLevel[nCount].M_RecNum:=nRecNum;
            pLevel[nCount].M_recPos:=nRecPos;
      

  3.   

    你根本就没有按我的写,我刚才忘了,
    new(pLevel[nCount]); //首先nCount不能出界
    pLevel[nCount]^ := TTargetLevel.Create;
    pLevel[nCount]^.M_RecNum:=nRecNum;
    pLevel[nCount]^.M_recPos:=nRecPos;这样写会错吗?不要加上@
      

  4.   

    何必这样费事
    type
     TTargetLevel = class(TObject)
      private
        Count: Integer;
        M_RecNum: Integer;
        M_recPos: Integer;
        Plevel: array[0..Level_size] of TargetLevel
    end;
    ....//TTargetLevel已经是指针了pLevel[nCount]:=TTargetLevel.Create;