赋值:
type
PAllHidenDate = ^AllHidenDate;
AllHidenDate = record
PriceID: Integer;
OrderNumber: string;
State: Integer;
PriceData: WideString;
end;
var
HidenData: PAllHidenDate;
begin
with lvDataViewAll.Items.Add do
begin
HidenData := New(PAllHidenDate);
HidenData.PriceID := StrToIntDef(Node.Attributes['PriceID'], 0);
HidenData.State := StrToIntDef(Node.Attributes['State'], 1);
HidenData.OrderNumber := Node.Attributes['PriceNumber'];
HidenData.PriceData := Node.XML;
Data := HidenData;
end;
end;
释放Data:
procedure TOrderQuotation.lvDataViewAllDeletion(Sender: TObject; Item:
TListItem);
var
HidenData : PAllHidenDate;
begin
if Item.Data = nil then Exit;
HidenData := Item.Data ;
Dispose(HidenData);
end;
释放内存时需要和赋值时的指针类型相同,不然会出错内存泄漏。
最近发现,WIN2003的内存管理比XP的内存管理要好很多(应该是容错能力比较强)。发现这个问题也因为上面的代码,在WIN2003中运行不会提示内存汇漏,而在XP中却会。