如何生成一个类的多个实例 ( 积分: 50 )

  • 主题发起人 主题发起人 匪匪
  • 开始时间 开始时间
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
Ttest = class
public
name: string[20];
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
list:tlist;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
list:=tlist.Create;
end;

procedure TForm1.Button1Click(Sender: TObject);
var jtest : Ttest;
i:integer;
begin
for i:=0 to 3 do
begin
jtest:= Ttest.Create;
list.add(pointer(jtest));
jtest.name:='xxx'+inttostr(i);
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(ttest(list[0]).name);
end;

end.
 
TYZhang真是苦口婆心啊![:D]

匪匪:
这里使用局部变量是正确的。虽然局部变量在事件句柄执行完毕后,就消失了,但你中间
用了Create,它建立的对象或者说开辟的内存却没消失,在建立后,马上将它的句柄保存
在Tlist中了,所以即便那个局部变量消失了,也无所谓的。
 
嗯,不管怎么样,很感谢大家的捧场。虽然分不多,但很感谢你们。特别是:TYZhang
我QQ:39576450,希望大家加我。
 
后退
顶部