type
ItemTemp=packed record
sName:string;
dBase,dId,dCallAddr:Cardinal;
wCount:Word;
bSite:Byte;
end;
PItemTemp=^ItemTemp;Procedure tmpGoods(ID,i:Cardinal);stdcall;
var
tmpitem:PItemTemp;
begin
Form5.mmo1.Lines.Add(IntToStr(id)+','+IntToStr(i));//正确显示
tmpitem.dBase:=My.dBase;//出错
tmpitem.dId:=ID; //出错
tmpitem.bSite:=1; //出错
end;我用delphi调试的时候在temitem.dbase显示
temitem nil打开后里面所有的 都显示Inaccessible value
ItemTemp=packed record
sName:string;
dBase,dId,dCallAddr:Cardinal;
wCount:Word;
bSite:Byte;
end;
PItemTemp=^ItemTemp;Procedure tmpGoods(ID,i:Cardinal);stdcall;
var
tmpitem:PItemTemp;
begin
Form5.mmo1.Lines.Add(IntToStr(id)+','+IntToStr(i));//正确显示
tmpitem.dBase:=My.dBase;//出错
tmpitem.dId:=ID; //出错
tmpitem.bSite:=1; //出错
end;我用delphi调试的时候在temitem.dbase显示
temitem nil打开后里面所有的 都显示Inaccessible value
tmpitem:ItemTemp;
New(tmpitem);
ItemTemp=packed record
sName:string;
dBase,dId,dCallAddr:Cardinal;
wCount:Word;
bSite:Byte;
end;
PItemTemp=^ItemTemp;Procedure tmpGoods(ID,i:Cardinal);stdcall;
var
FTmpItem1: TItemTemp; //结构体
FTmpItem2: PItemTemp; //结构体指针
begin
Form5.mmo1.Lines.Add(IntToStr(id)+','+IntToStr(i));//正确显示
//结构体赋值
FTmpItem1.dBase := My.dBase;
FTmpItem1.dId := ID;
FTmpItem1.bSite := 1;
//结构体指针赋值
New(FTmpItem2);
FTmpItem2^.dBase := My.dBase;
FTmpItem2^.dId := ID;
FTmpItem2^.bSite := 1;
……
Dispose(FTmpItem2); //这句很重要,否则会产生内存泄漏
end;