• [转]delphi的TList,TStringList,TObjectList


      不同于TList类,TObjectList类的Add, Remove, IndexOf, Insert等方法都需要传递TObject对象作为参数,由于有了编译期的强类型检查,使得TObjectList比TList更适合保存对象。此外TObjectList对象有OwnsObjects属性。当设定为True (默认值),同TList类不同,TObjectList对象将销毁任何从列表中删除的对象。无论是调用Delete, Remove, Clear 方法,还是释放TObjectList对象,都将销毁列表中的对象。有了TObjectList类,我们就再也不用使用循环来释放了对象。这就避免了释放链表对象时,由于忘记释放链表中的对象而导致的内存泄漏。 另外要注意的是OwnsObjects属性不会影响到Extract方法,TObjectList的Extract方法行为类似于TList,只是从列表中移除对象引用,而不会销毁对象。

      在TstringList里,那些String被一行一行地储存。TstringList.Text返回全部的String。如果第一、二、三 行分别是\'aa\'、\'bb\'、\'cc\' 的话,那么Text 返回的是“\'aa\'+#13#10+\'bb\'+#13#10+\'cc\'+#13#10” (不包括双引号)。所有的String都被TstringList用回车和换行符(#13#10)连接了起来。如果依次向Text赋值的话,Text就会 被自动地分割成行储存在TstringList 里。这充分地体现出TstringList的一个很实用的价值:它能让我们逐行处理String。假如我们要操作第4行,只需操作 TstringList[3]。相信大家会问,TstringList明明是一个类,为什么能当数组那样子用呢?其实,我们在写 TstringList[3]的时候,就是在写TstringList.Strings[3]。Strings是TstringList的一个缺省属性。 数组性的缺省属性就是这样子使用的。如果大家在编写类的时候要用到这么一个功能的话,可以参照如下方法:

      property AProperty[I: Integer] read *** write ***;

      default;。

      Strings 是一个可读写的属性。这也就是说,大家不仅可以获得第N 行的内容,也可以改变第N 行的内容。因此我们需要知道TstringList 里S t r i n g 的总行数。TstringList的属性Count则可以满足我们的需要。

      上面已经说过,Text是一个返回所有字符串的属性。向Text赋值时,TstringList能够自动地把Text分成一行一行的,然后储存 在TstringList里(当然,TstringList里面并不完全是这么储存的,详细过程建议看TstringList和TStrings的代 码)。这样,Strings返回的字符串就是没

      有回车和换行的。但是,如果我们向Strings赋值的字符串有回车和换行,那么会出现什么情况呢?此时,Strings就会把那个字符串断成 几行,插入到原来的位置上。如果TstringList只有这么些功能的话,那我就不必专门拿出来讲了——我是说,TstringList能让我们任意

      地插入或删除某行,这就要用到TstringList提供的方法。

      function Add(const S: string): Integer;

      procedure Append(const S: string);

      Add方法向TstringList的末尾添加一行String(在这里和下面我们都假设输入的字符串没有回车和换行,否则String将被分 割)。参数S 代表的是要插入的字符串的内容。Add的返回值代表了新的字符串在TstringList的位置——也就是最后一行的位置,即新的Count 减去一。

      Append 方法与Add 唯一不同的地方是没有返回值。

      procedure Insert(Index: Integer; const S: string);

      Insert方法向TstringList插入一行字符串。在Insert里,我们可以自由地选择字符串插入的位置。参数S 代表要插入的字符串的内容,Index 代表要插入的位置。

      procedure Delete(Index: Integer);

      Delete 方法删除某行字符串,我们同样可以自由地选择删除任意一行字符串。参数Index代表要删除的那一行字符串的位置。

  • 相关阅读:
    Xshell连接阿里云Centos6.8
    vsftpd文件服务器安装与配置
    JDK安装(linux系统)
    网站架构
    linux软件源配置
    java 调用静态方法和构造函数和静态块执行的先后顺序
    Mybatis的WHERE和IF动态
    MAVEN项目(仓库中没有jar包)
    Shiro
    MVC系列学习(六)-Razor语法
  • 原文地址:https://www.cnblogs.com/LeoWong/p/2163919.html
Copyright © 2020-2023  润新知