procedure TForm1.Button1Click(Sender: TObject);
var
List:TStringList;
Bit:TBitMap;
begin
List:=TStringList.Create;
Bit:=TBitMap.Create;
Bit.LoadFromFile('D:\a.bmp');
List.AddObject('123',Bit);
BP:=Bit;
LP:=List;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
TStringList(LP).Free;
TBitMap(BP).SaveToFile('d:\qiubmp.bmp');
end;为什么bit这个没有被释放,delphi回自动释放吗?
TStringList(LP).Free; 释放了 里面的对象也应该释放啊
var
List:TStringList;
Bit:TBitMap;
begin
List:=TStringList.Create;
Bit:=TBitMap.Create;
Bit.LoadFromFile('D:\a.bmp');
List.AddObject('123',Bit);
BP:=Bit;
LP:=List;
end;procedure TForm1.Button2Click(Sender: TObject);
begin
TStringList(LP).Free;
TBitMap(BP).SaveToFile('d:\qiubmp.bmp');
end;为什么bit这个没有被释放,delphi回自动释放吗?
TStringList(LP).Free; 释放了 里面的对象也应该释放啊
List:TStringList;
...
还要注意 ...
LP:=List;
end;
但是TObjectList就不一样了。
lp既然要addobject的话,也就是把它当容器了,那你对它里面的object操作就可以根据它的item的name(比如用你上面的123)来查找到TBitMap对象来操作,还要用另外的一个全局变量来操作,这不又给自己添乱吗
procedure TForm1.Button1Click(Sender: TObject);
var
List:TStringList;
Bit:TBitMap;
begin
try
List:=TStringList.Create;
Bit:=TBitMap.Create;
Bit.LoadFromFile('D:\a.bmp');
List.AddObject('123',Bit);
BP:=Bit;
LP:=List;
finally
List.Free;
Bit.free;
end
end;