TStrings与TStringList

本文主要介绍了Delphi编程中TStrings类及其子类TStringList的使用。TStringList是一个常用的字符串列表容器,支持排序、增删字符串等操作。在访问字符串、排序、添加元素以及处理CommaText和DelimitedText属性时,需要注意空格和逗号的处理,特别是Delphi 6中的一个关于空格作为分隔符的bug。在循环遍历并修改TStringList时,需防止因操作引起Count变化导致的错误。
delohi中与TStrings相关的类的关系如下图所示:
 
 
 
其中TStrings是一个虚类,若要创建一个TStrings对象必须由其子类中的具体类通过create方法创建一个对象,再将该对象赋值给TStrings对象,这与C++中的将子类对象赋值给父类对象是相通的。
 
由于TStringList类继承自TStrings类,并且我在实际编程中也比较趋向于申明TStringList型对象,下面就主要介绍下我使用TStringList类的一些常用操作,假设有一个TStringList型的strList对象:
1:若要访问strList中的某一字符串,通过strList.Strings[index]来访问,index代表字符串的索引,从0开始计数
2:若要将strList中字符串的位置进行排序,可以将其属性Sorted属性设为true,或者调用Sort方法,此时若CaseSensitive属性为true,则依据AnsiCompareStr来进行排序
      反之则依据AnsiCompareText来进行排序
3:若要向strList中增加一个字符串,通过strList.Add(sStr)来增加,sStr代表需要加入的字符串,若不进行排序,则sStr将插入到最后,否则sStr将依据排序的方式插入到合适的位置
4:CommaText:用于获取或者设置strList中的所有字符串,各个字符串之间以逗号或者空格来区分,即分隔符为逗号或者空格(据说是因为当初delphi程序员将空字符串''写成了带有一个空格的字符串' '而造成的),若你想在字符串中包含逗号或者空格,请使用转义符双引号
5:Delimiter:指定分隔符,用于为DelinitedText属性服务
6:DelinitedText:效果与CommaText相似,但可以通过Delimiter来指定特定的分隔符,注意转义符双引号的使用。此处对于delphi6有一个bug(听说高版本的delphi解决了该bug,但我没试过),即空格也会被作为额外的分隔符,这个可以通过使用转义符双引号来解决,如果不方便添加双引号的话可以考虑将空格符替换成别的特殊字符,在对strList处理完后再将空格符替换回来的方式(我在做快速部署工具的时候就是使用的这种方式),还有一种方式是该delphi的源码,即将4中说的带空格的字符串换成空字符串,这个我没有试过。
7:strList可以直接复制给某些控件的属性,并且该属性的类型为TStrings或者TStringList类型,这一点在初始化某些控件的属性方面还是很方便的
8:最后一点需要特别注意的是(其实这点不光是在TStringList中会发生,在其它的一些情况下也可能会发生,在这里我吃过好几次亏):若通过strList.Count循环对strList进行操作,并且在循环体中对strList进行了导致符串数目发生了变化的操作,此时需要有额外代码进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值