关于TStringList的问题,在线等待,谢谢!

zhangch96 2006-07-14 04:18:08
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也会改变,有没有办法避免?
...全文
222 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangch96 2006-07-14
  • 打赏
  • 举报
回复
再问xzhifei,
对其他类型的变量,比如integer,为什么不存在这样的问题呢?
xzhifei 2006-07-14
  • 打赏
  • 举报
回复
newList在窗体创建时也要创建
复制用
newList.Assign(oldList);

newList.text:=oldList.text;


------------------------------------------------------- 本回复由大傻的破玩意儿【CSDN's forum Explorer】完成! 软件功能强大,速度超快!!支持中... 软件下载地址:http://CoolSlob.ys168.com
li_zhifu 2006-07-14
  • 打赏
  • 举报
回复
在->存
Cipherliu 2006-07-14
  • 打赏
  • 举报
回复
你最大的问题在于
newList := oldList;
这一句执行后,两个对象就是一个东东了
你要理解Delphi的对象,它只不过相当于C++的对象指针,所以你这种操作是不对的
如果要复制其中的内容,应该用newList.text:=oldList.text;
li_zhifu 2006-07-14
  • 打赏
  • 举报
回复
newList := oldList;
这种方式实际上是内在指针赋值,结果当然是一样的了

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧