public
{ Public declarations }
oldList: TStringList;
newList: TStringList;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
oldList := TStringList.Create;
oldList.Add('1');
oldList.Add('2');
oldList.Add('3');
end;procedure TForm1.btn1Click(Sender: TObject);
begin
mmo1.Lines.Clear;
mmo1.Lines.AddStrings(oldList);
end;procedure TForm1.btn2Click(Sender: TObject);
begin
mmo1.Lines.Clear;
newList := oldList;
newList.Delete(0);
mmo1.Lines.AddStrings(newList);
end;如上代码所示, newList改变,oldList也会改变,有没有办法避免?
{ Public declarations }
oldList: TStringList;
newList: TStringList;
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
oldList := TStringList.Create;
oldList.Add('1');
oldList.Add('2');
oldList.Add('3');
end;procedure TForm1.btn1Click(Sender: TObject);
begin
mmo1.Lines.Clear;
mmo1.Lines.AddStrings(oldList);
end;procedure TForm1.btn2Click(Sender: TObject);
begin
mmo1.Lines.Clear;
newList := oldList;
newList.Delete(0);
mmo1.Lines.AddStrings(newList);
end;如上代码所示, newList改变,oldList也会改变,有没有办法避免?
这种方式实际上是内在指针赋值,结果当然是一样的了
newList := oldList;
这一句执行后,两个对象就是一个东东了
你要理解Delphi的对象,它只不过相当于C++的对象指针,所以你这种操作是不对的
如果要复制其中的内容,应该用newList.text:=oldList.text;
复制用
newList.Assign(oldList);
或
newList.text:=oldList.text;
-------------------------------------------------------
本回复由大傻的破玩意儿【CSDN's forum Explorer】完成!
软件功能强大,速度超快!!支持中...
软件下载地址:http://CoolSlob.ys168.com
对其他类型的变量,比如integer,为什么不存在这样的问题呢?