zoukankan      html  css  js  c++  java
  • [转]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代表要删除的那一行字符串的位置。

  • 相关阅读:
    Building Java Projects with Gradle
    Vert.x简介
    Spring及Spring Boot 国内快速开发框架
    dip vs di vs ioc
    Tools (StExBar vs Cmder)which can switch to command line window on context menu in windows OS
    SSO的定义、原理、组件及应用
    ModSecurity is an open source, cross-platform web application firewall (WAF) module.
    TDD中测试替身学习总结
    Spring事务银行转账示例
    台式机(华硕主板)前面板音频接口(耳机和麦克风)均无声的解决办法
  • 原文地址:https://www.cnblogs.com/LeoWong/p/2163919.html
Copyright © 2011-2022 走看看