[转]delphi的TList,TStringList,TObjectList
2011-09-02 16:20
387 查看
不同于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代表要删除的那一行字符串的位置。
在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代表要删除的那一行字符串的位置。
相关文章推荐
- *Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
- Delphi容器类之---Tlist,TStringlist,THashedStringlist的效率比较
- Delphi容器类之---TList、TObjectList、TComponentList、TClassList的使用
- *Delphi容器类之---TList、TObjectList、TComponentList、TClassList
- Delphi容器类之---TList、TObjectList、TComponentList、TClassList的使用
- Delphi容器类之---TList、TObjectList、TComponentList、TClassList
- 谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
- Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>
- delphi 组件容器TObjectList代替List
- Delphi中 TStringList 的详细用法
- DELPHI中使用Tlist类的补充学习
- 谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
- Delphi ------TStringList
- Delphi TList 使用范例
- Delphi集合类型的使用-TList
- 谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
- delphitlist使用范例
- delphi中TMemo和TStringList保存文本文件TXT时去除每行后面回车符(#13)的方法
- Delphi 2009 泛型容器单元(Generics.Collections)[1]: TList<T>
- TList,TObjectList 使用——资源释放