声明:type TStringList;
描述:TStringList是一个公用的类类型,它对于许多列表处理非常有用。在字符串列表中的项目可以被插入、删除和排序。
列表的建立有三种方式:1、一个字符串接一个字符串加入;2、加载一个以逗号分隔的大字符串;3、载入一个文本文件。
TStringList是从TStrings中派生出来的,你也可以使用TStrings,但不建议这样做,因为它是不完全的--即有一些方法是抽象的。而TStringList实现了这些抽象方法(Clear, Delete 和Insert)。我们会覆盖TStringList的主要属性和方法,包含那些派生自TStings的。
Count属性:返回列表中字符串的数量。
Capacity属性:设置或取得字符串列表的当前容量。为了性能方面的原因,需要自行管理这个容量。
Strings属性:取得或更新在列表中给定索引的字符串(第一个列表项目的索引为0)。注意:Strings属性是默认的属性,这就意味着使用时可以不用指定Strings名称,如:myName:=names.Strings[4]相当于myName:=names[4]。
Text属性:以一个大字符串的形式设置或取得列表内容。这个大字符串的每个字符串以换行回车符结束。对于从一个可以保存多行文本的可视化对象(如Memo)中导入数据而言非常有用。
CommaText属性:以一个大字符串的形式设置或取得列表内容。这个大字符串的每个项目字符串以逗号分隔。对于从一个电子表格导出的文本文件中导入数据是非常用用的。当取得数据时,如果一个字符串中包含了内嵌的空格时,它将被双引号括起来。
DelimitedText属性:以一个大字符串的形式设置或取得列表内容。这个大字符串的每个项目字符串以分隔号Delimiter分隔(默认为逗号)。如果字符串包含内嵌的空格,必须用QuoteChar符号括起来(默认是双引号)。
QuoteChar属性:当使用DelimitedText时,用什么符号将有空格的字符串括起来。
Delimiter属性:当使用DelimitedText时,用于分隔字符串的符号。
Names属性:在字符串列表中的字符串可以被当作一对"名称/数值"对待。每个字符串必须是不能含有空格,必须包含一个"="等于号(或者是当前的NameValueSeparator变量值)。这是个非常有用的概念,参见Value属性、ValueFromIndex属性和IndexOfName方法。
Value属性:当使用"名称/数值"对时,返回给定名称的数值。
ValueFromIndex属性:当使用"名称/数值"对时,返回给定字符串索引(索引开始于0)的数值。
CaseSensitive属性:当设为True时,Delphi对待字符串是以大小写混合的形式,用于执行某种操作,如排序Sort。
Duplicates属性:这个属性可以是下列TDuplicates枚举值中的其中一个:
dupIgnore:忽略(丢弃)重复值
dupAccept:允许重复值
dupError:如果有重复值则抛出异常
在加入字符串之前,必须先将其设为某个期望的值。
Sorted属性:如果是True,所有加入的字符串将会进行排序;如果是False,后加入的处于字符串列表尾部。参见Sort方法。
Objects属性:如果存在,则返回给定索引的字符串相关联的对象。
Add方法:将给定的字符串加入到列表中,返回分配的索引值(开始于0)。
Append方法:如Add方法相似,但不返回索引值。
Insert方法:在给定的索引位置插入一个字符串。位置0的话,将强制在开始处插入。
Delete方法:删除定索引的字符串。
Clear方法:删除列表中的所有字符串。
Move方法:将字符串从一个索引位置移动到另一个索引位置,周围的字符串适当地移动。
Exchange方法:根据索引值,交换列表中的两个字符串。
IndexOf方法:取得给定字符串第一个匹配的字符串的索引位置,如果没有找到则返回-1。
IndexOfName方法:取得给定字符串第一个匹配的"名称/数值"对字符串的索引位置,如果没有找到则返回-1。
Find方法:与IndexOf相同,但用于排序的字符串列表。
Sort方法:当Sorted为False时,使用这个方法强制进行排序。
AddStrings方法:将另一个字符串列表中的字符串加入到本个字符串列表。
Assign方法:用另一个列表内容替换当前列表。
LoadFromFile方法:非常有用。从一个文本文件加载字符串列表。每一个文本行(以换行回车符CRLF结束)成为一个项目字符串。
SaveToFile方法:将字符串列表保存为文本文件。
{简单例子} var animals : TStringList; // 定义字符串列表变量 i : Integer; begin // 创建对象 animals := TStringList.Create; // 加入几个字符串 animals.Add('Cat'); animals.Add('Mouse'); animals.Add('Giraffe'); // 显示 for i := 0 to animals.Count-1 do ShowMessage(animals[i]); // animals[i] 相当于 animals.Strings[i] end;
程序运行结果:
Cat
Mouse
Giraffe
{使用"名称/数值"对} var names : TStringList; // 定义字符串列表变量 ageStr : String; i : Integer; begin //创建成对象 names := TStringList.Create; // 加入一些字符串 names.CommaText := 'Neil=45, Brian=63, Jim=22'; // 查找Brian的年龄 ageStr := names.Values['Brian']; //显示这个值 ShowMessage('Brians age = '+ageStr); // 显示所有名字与相应的年龄 for i := 0 to names.Count-1 do begin ShowMessage(names.Names[i]+' is '+names.ValueFromIndex[i]); end; end;
程序运行结果:
Brians age is 63
Neil is 45
Brian is 63
Jim is 22
{使用DelimitedText, Delimiter and QuoteChar} var cars : TStringList; //定义一个字符串列表变量 i : Integer; begin // 创建对象 cars := TStringList.Create; // 加入几种汽车 - 使用DelimitedText属性 // with overriden control variables cars.Delimiter := ' '; // 每个项目用空格分隔 cars.QuoteChar := '|'; //每个项目用"|"括起来 cars.DelimitedText := '|Honda Jazz| |Ford Mondeo| |Jaguar "E-type"|'; // 显示这些汽车 for i := 0 to cars.Count-1 do ShowMessage(cars[i]); // cars[i]相当于 cars.Strings[i] end;
程序运行结果:
Honda Jazz
Ford Mondeo
Jaguar "E-type"