如下的类:
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不能读写的错误。高手给指点迷睛。
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不能读写的错误。高手给指点迷睛。
你应该是这样:
new(pLevel[nCount]); //首先nCount不能出界
pLevel[nCount] := TTargetLevel.Create;
pLevel[nCount].M_RecNum:=nRecNum;
pLevel[nCount].M_recPos:=nRecPos;这样肯定没错误!试试,给分吧! :)
new(pLevel[nCount]);
pLevel[nCount]:[email protected];
//strcopy(pLevel[nCount].Name,LevelText);
pLevel[nCount].M_RecNum:=nRecNum;
pLevel[nCount].M_recPos:=nRecPos;
new(pLevel[nCount]); //首先nCount不能出界
pLevel[nCount]^ := TTargetLevel.Create;
pLevel[nCount]^.M_RecNum:=nRecNum;
pLevel[nCount]^.M_recPos:=nRecPos;这样写会错吗?不要加上@
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;