内存出现问题???找不到问题在哪里?(20分)

  • 主题发起人 主题发起人 xhcxhc200
  • 开始时间 开始时间
X

xhcxhc200

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure Tanpaifrm.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i,j:integer;
begin
j:=listview1.Items.Count;
for i:=0 to mainfrm.ListView1.Items.Count-1 do
begin
if mainfrm.ListView1.Items.Item.Selected then
begin
memo1.Lines.Add(mainfrm.ListView1.Items.Item.Caption);
listview1.Items.Item[j]:=listview1.Items.Add;
listview1.Items.Item[j].Caption:=mainfrm.ListView1.Items.Item.SubItems.Strings[2];
j:=j+1;
end;
end;
end;
操作可以实现,关闭以后会出现内存问题..应该怎么找出现问题的地方
 
检查几个地方:
一: Destroy() 方法中是否发生重复释放的现像即, 一个变量本身为nil. 但你仍然进行了Obj.Free的操作. 所以通常在释放对像时请进行以下操作
if Assigned(Obj) then begin
Obj.free;
Obj := nil;
end;

二: 操作一个正在或已经被释放的对像.
像Memo1.Lines.Add("xxxx") ,这种UI显示
 
procedure Tanpaifrm.Memo1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
i:integer;
begin
for i:=0 to mainfrm.ListView1.Items.Count-1 do
begin
if mainfrm.ListView1.Items.Item.Selected then
begin
memo1.Lines.Add(mainfrm.ListView1.Items.Item.Caption);
with listview1.Items.Add do
Caption:=mainfrm.ListView1.Items.Item.SubItems.Strings[2];
end;
end;
end;
 
我那么写出错在哪里?
 
我可以运行,关闭程序后会出现内存问题
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部