Delphi总结使用TStrings的一些技巧
- 先把要讨论的几个属性列出来:
- 1、CommaText
- 2、Delimiter & DelimitedText
- 3、Names & Values & ValueFromIndex
- 先看第一个:CommaText。怎么用呢?用代码说话:
- const
- constr :String = 'aaa,bbb,ccc,ddd';
- var
- strs :TStrings;
- i :Integer;
- begin
- strs := TStringList.Create;
- strs.CommaText := constr;
- for i := 0 to Strs.Count-1 do
- ShowMessage(Strs[i]);
- end;
- 执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。
- 也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以'',''为分割符,分段添加到TStrings中。
- 那么如果不是以'',''来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。
- const
- constr :String = 'aaa\bbb\ccc\ddd';
- var
- strs :TStrings;
- i :Integer;
- begin
- strs := TStringList.Create;
- strs.Delimiter := '\';
- strs.DelimitedText := constr;
- for i := 0 to Strs.Count-1 do
- ShowMessage(Strs[i]);
- end;
- 可以看到, 显示的效果和第一个例子是一模一样的。解释一下:
- Delimiter为分隔符,默认为:'',''。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后会把这个字符串按Delimiter的字符添加到TStrings中。
- 说到这里,有想起一个属性,QuoteChar。其默认值为:''"''(不包括单引号)
- 有何用呢?看例子:
- const
- constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';
- var
- strs :TStrings;
- i :Integer;
- begin
- strs := TStringList.Create;
- strs.Delimiter := '\';
- strs.DelimitedText := constr;
- for i := 0 to Strs.Count-1 do
- ShowMessage(Strs[i]);
- end;
- 显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
- 再来看一个例子:
- const
- constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';
- var
- strs :TStrings;
- i :Integer;
- begin
- strs := TStringList.Create;
- strs.Delimiter := '\';
- strs.QuoteChar := '|';
- strs.DelimitedText := constr;
- for i := 0 to Strs.Count-1 do
- ShowMessage(Strs[i]);
- end;
- 显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。
- 但是还要多说一句,当Delimiter为:'',''而QuoteChar为:''"''时,DelimitedText和CommaText是同等的。
- 最后要说的三个是:Names & Values & ValueFromIndex。
- 看看下面的代码:
- const
- constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';
- var
- strs :TStrings;
- i :Integer;
- begin
- strs := TStringList.Create;
- strs.CommaText := constr;
- for i := 0 to strs.Count-1 do
- begin
- ShowMessage(strs.Names[i]);
- ShowMessage(strs.Values[strs.Names[i]]);
- ShowMessage(strs.ValueFromIndex[i]);
- end;
- end;
- 通过这个例子不难看出:
- 这个时候strs中的内容是:
- 0=aaa
- 1=bbb
- 2=ccc
- 3=ddd
- 而Names中则是:
- 0
- 1
- 2
- 3
- 在Values中则是:
- aaa
- bbb
- ccc
- ddd
- 这几个属性用来处理ini文件是非常好用的。
- 另外说一句,在Delphi6下似乎没有ValueFromIndex这个属性
Delphi总结使用TStrings的一些技巧的更多相关文章
- Delphi IDE使用的一些主要技巧
Delphi IDE使用的一些主要技巧 1.查找和替换 (1)<ctrl>+F[1]:选择页“Find”,进行查找,则根据查找方向继续查找.选择页“Findin Files”,则进行该工程 ...
- TStrings的一些技巧(转)
TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的.常规的用法大家都知道,现在来讨论它的一些高级的用法.先把要讨论的几个属性列出来:1.CommaText2.Delimiter ...
- Delphi 2007体验!
Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...
- delphi XE5下安卓开发技巧
delphi XE5下安卓开发技巧 一.手机快捷方式显示中文名称 project->options->Version Info-label(改成需要显示的中文名即可),但是需要安装到安卓手 ...
- Delphi之TStrings和TStringLists类
Delphi之TStrings和TStringLists类 有些类不是组件,但它们支持存在的组件.这些类是其他组件的典型属性,直接由TPersistent派生,如TStrings.TCanvas和TC ...
- Delphi三层开发小技巧:TClientDataSet的Delta妙用
Delphi三层开发小技巧:TClientDataSet的Delta妙用 转载 2014年10月13日 09:41:14 标签: 三层 / ClientDataSet 318 from :http:/ ...
- Delphi开发的一些技巧
[Delphi]Delphi开发的一些技巧 一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then - ...
- Delphi操作ACCESS技巧集
1.DELPHI中操作access数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//在之前us ...
- [Delphi]Delphi开发的一些技巧
一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then -->查询是否已准备好 Customer ...
随机推荐
- Ubuntu系统如何修改主机名
1.执行命令 hostname temp_name 这样主机名就改掉了.只不过重启后名字会恢复不一定使我们想要的.机器重启后会重新去读取/etc/hostname里面存储的主机名.所以如果想永久改掉的 ...
- 利用hibernate实现oracle(每张表的ID)自动增长
设置ID的增长策略是sequence,同时指定sequence的名字,最好每个表建一个sequence 例如创建一个序列:CREATE SEQUENCE DEPARTMENT_ID_SEQ MINVA ...
- js-转大小写
.toLowerCase()转小写.toUpperCase();转大写
- ftok函数的使用
ftok函数的定义:系统建立IPC通讯 (消息队列.信号量和共享内存) 时必须指定一个ID值.通常情况下,该id值通过ftok函数得到. 头文件 #include <sys/types.h> ...
- jsp的Get 与 SET的区别
getParameter:获取前个页面的数据,此方法获取的数据是从前台提交过来的 getAttribute:是获取setAttribute存储的数据 ========================= ...
- Linux服务器软件安装备忘
1.Centos安装Mysql --安装 yum install mysql-server 卸载 yum -e mysql-server --设置为开机启动 chkconfig mysqld on - ...
- decoder3_8
这两天回归书本,继续阅读书上的内容,此时的体会与刚开始学那会的体会是不一样的,比如3_8decoder,之前就认为可以用case来写,而书上有一种更简便的方式来描述,带给你新的思路,既然有新方式可以描 ...
- 利用dokan作虚拟磁盘开发
dokan是用户态的文件系统驱动,可以称之为fuse for windows.可以用来开发虚拟磁盘,即在“我的电脑”中虚拟出一个硬盘来,可以是硬盘,也可以是可移动磁盘或者网络硬盘. CreateFil ...
- Android Studio的使用(四)--生成Get、Set方法
如何快速生成Get.Set方法,在我们编程中经常使用,下面将详细介绍. 1.右击代码编辑区域,并选择Generate. 2.在弹出框中选择Getter and Setter. 3.在弹出框中全选所有变 ...
- Android网络开发之OkHttp--基本用法GET
1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...
