zoukankan      html  css  js  c++  java
  • 关于 TStringList.Assign 回复 "u9cm" 的问题

    问题来源: http://www.cnblogs.com/del/archive/2008/12/29/1230404.html#1416838

    譬如有两个 TStringList 对象: List1 和 List2;

    List2.Assign(List1) 就是把 List1 的内容复制给 List2;

    List2 := List1 相当于给 List1 再取一个名字.

    举例:
    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      List1,List2: TStringList;
    begin
      List1 := TStringList.Create;
      List2 := TStringList.Create;
    
      List1.CommaText := 'AAA,BBB,CCC';
    
      List2.Assign(List1); {此时 List1、List2 分别指向了不同的对象}
      ShowMessageFmt('%s, %p', [List1[0], Pointer(List1)]); { AAA, 00ABAA40 }
      ShowMessageFmt('%s, %p', [List2[0], Pointer(List2)]); { AAA, 00ABAA90 }
    
      List1.Free;
      ShowMessage(List2[1]); {List1 释放后, List2 还会存在.}
      List2.Free;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    var
      List1,List2: TStringList;
    begin
      List1 := TStringList.Create;
      List1.CommaText := 'AAA,BBB,CCC';
    
      List2 := List1;          {此时 List1、List2 指向了同一个对象}
      ShowMessageFmt('%s, %p', [List1[0], Pointer(List1)]); { AAA, 00ABAA40 }
      ShowMessageFmt('%s, %p', [List2[0], Pointer(List2)]); { AAA, 00ABAA40 }
    
      List1.Free;              {此时 List1、List2 指向的对象释放了}
      //ShowMessage(List2[1]); {所以这句会出错}
    end;
    
    end.
    
  • 相关阅读:
    Python3.4 多线程
    OSG Win7 + VS2015 编译
    OSG-3.4.0 简要说明(Readme)
    Boost 1.62.0 编译参数
    VS2015 + QT5.7 中文的坑
    C++库编译
    osg学习笔记3 简单几何模型
    Sqlserver 创建账号
    nginx检查报错:nginx: [emerg] "server" directive is not allowed here in
    Linux修改挂载目录名称
  • 原文地址:https://www.cnblogs.com/del/p/1364778.html
Copyright © 2011-2022 走看看