请看一下这个类要如何释放??
var
myClass:TmyClass;
begin
myClass:=TmyClass.Create;
myClass.name:='hwj';
myClass.num:=29;
TComboBox.Items.AddObject('aaa',myClass)
myClass:=TmyClass.Create;
myClass.name:='pig';
myClass.num:=28;
TComboBox.Items.AddObject('bbb',myClass)
end;
请教当窗口关闭时,这两个 myClass 类是否需要释放? 以及该如何释放?
问题点数:20、回复次数:9Top
1 楼Samland(samland)回复于 2004-12-03 15:44:12 得分 20
for i:=0 to TComboBox.Items.Count-1 do
TComboBox.Items[i].Free
PS:
TComboBox 怎么做了变量啦?Top
2 楼cdsgajxlp(起名很难)回复于 2004-12-03 17:44:36 得分 0
不要释放Top
3 楼cdsgajxlp(起名很难)回复于 2004-12-03 17:46:55 得分 0
错了,要释放Top
4 楼cdsgajxlp(起名很难)回复于 2004-12-03 17:50:21 得分 0
测试代码
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RzEdit, RzButton;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
list : Tstringlist;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
sss : Tlabel;
i : integer;
begin
for i:=0 to 10 do
begin
sss:=Tlabel.Create(self);
sss.Caption:=inttostr(i);
sss.Name:='a'+inttostr(i)+'111';
list.AddObject(inttostr(i),sss);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
list:=Tstringlist.Create;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
list.Free;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
list.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
showmessage((form1.FindComponent('a1111') as Tlabel).Caption);
end;
procedure TForm1.Button4Click(Sender: TObject);
var
i : integer;
begin
for i:=0 to 10 do
begin
memo1.Lines.Add(((list.Objects[i] as Tlabel).Caption));
end;
end;
end.
Top
5 楼lookher(我是老虎)回复于 2004-12-03 17:57:43 得分 0
我用上面的方法试过了,出错! 另外我试过 TmyClass(TComboBox.items.object[i]).free ,也是出错!
如果不进行释放,当我退出程序时会提示 : access violation at address XXXXXTop
6 楼nyf1220(我是党员----不过听说最近风声紧,打算换名字)回复于 2004-12-03 18:01:30 得分 0
var
myClass:TmyClass;
begin
myClass:=TmyClass.Create;
myClass.name:='hwj';
myClass.num:=29;
ComboBox1.Items.AddObject('aaa',myClass)//写错了把,应该是ComboBox1吧
myClass:=TmyClass.Create;
myClass.name:='pig';
myClass.num:=28;
ComboBox1.Items.AddObject('bbb',myClass)
end;
不用释放Top
7 楼lookher(我是老虎)回复于 2004-12-03 18:16:20 得分 0
如果不进行释放,当我退出程序时会提示 : access violation at address XXXXXTop
8 楼nyf1220(我是党员----不过听说最近风声紧,打算换名字)回复于 2004-12-03 18:38:17 得分 0
那肯定也不是这里的错吧?
Top
9 楼lookher(我是老虎)回复于 2004-12-03 18:58:44 得分 0
是我自已打错了,Samland(samland) 的方法是对的,谢谢!Top




