问一个delphi 的问题
我创建了一个类 Tydsms 然后在主窗休中使用 ydsms : array[0..15] of Tydsms; 之后用
ydsms [1] := Tydsms.create; ydsms [2] := Tydsms.create; 创建两个对象,但是有个问题 ,就是我改ydsms[2]里的变量值 结果 ydsms[1]里的也一样改动了 这是什么呢?unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit2;type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
btn2: TButton;
mmo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ydsms : array[1..30] of Tydsms;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ydsms[1] := Tydsms.Create;
ydsms[1].setmemo(mmo1);ydsms[2] := Tydsms.Create;
ydsms[2].setmemo(mmo2);
end;procedure TForm1.btn1Click(Sender: TObject);
begin
ydsms[1].showinfo;
ydsms[2].showinfo;
ydsms[2].setinfo('step2');
end;procedure TForm1.btn2Click(Sender: TObject);
begin
ydsms[1].showinfo;
ydsms[2].showinfo;
end;end.
我创建了一个类 Tydsms 然后在主窗休中使用 ydsms : array[0..15] of Tydsms; 之后用
ydsms [1] := Tydsms.create; ydsms [2] := Tydsms.create; 创建两个对象,但是有个问题 ,就是我改ydsms[2]里的变量值 结果 ydsms[1]里的也一样改动了 这是什么呢?unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unit2;type
TForm1 = class(TForm)
mmo1: TMemo;
btn1: TButton;
btn2: TButton;
mmo2: TMemo;
procedure FormCreate(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
ydsms : array[1..30] of Tydsms;
implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ydsms[1] := Tydsms.Create;
ydsms[1].setmemo(mmo1);ydsms[2] := Tydsms.Create;
ydsms[2].setmemo(mmo2);
end;procedure TForm1.btn1Click(Sender: TObject);
begin
ydsms[1].showinfo;
ydsms[2].showinfo;
ydsms[2].setinfo('step2');
end;procedure TForm1.btn2Click(Sender: TObject);
begin
ydsms[1].showinfo;
ydsms[2].showinfo;
end;end.
unit Unit2;interface
uses StdCtrls;
type
Tydsms = class
memo1 : Tmemo;
public
info : string;
procedure setmemo(memo : Tmemo);
procedure showinfo;
procedure setinfo(ss : string);
constructor create;
private end;
var
my : Tydsms;implementation{ Tydsms }
constructor Tydsms.create;
begin
info := 'deault';
end;procedure Tydsms.setinfo(ss: string);
begin
info := ss;
end;procedure Tydsms.setmemo(memo: Tmemo);
begin
memo1 := memo;
end;procedure Tydsms.showinfo;
begin
memo1.Lines.Add(info);
end;end.
mmo1
deault
deaultmmo2
deault
step2