| 查看: 706 | 回复: 1 | |||
[交流]
【转帖】delphi TStringList的用法 已有1人参与
|
|
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); 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); 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); 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); 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); ShowMessage(strs.Values[strs.Names]); ShowMessage(strs.ValueFromIndex); end; end; 通过这个例子不难看出: 这个时候strs中的内容是: 0=aaa 1=bbb 2=ccc 3=ddd 而Names中则是: 0 1 2 3 在Values中则是: aaa bbb ccc ddd 似乎有点不合适宜,但谁也不能否认,delphi还是蛮好用的,这个是最近两天中碰到的问题的解法 http://www.wangwa.com/info/2006-12/59350.htm |
» 猜你喜欢
Cas 72-43-5需要30g,定制合成,能接单的留言
已经有8人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有6人回复
北京211副教授,35岁,想重新出发,去国外做博后,怎么样?
已经有8人回复
磺酰氟产物,毕不了业了!
已经有5人回复
论文终于录用啦!满足毕业条件了
已经有25人回复
2026年机械制造与材料应用国际会议 (ICMMMA 2026)
已经有3人回复
自荐读博
已经有3人回复
不自信的我
已经有5人回复
投稿Elsevier的杂志(返修),总是在选择OA和subscription界面被踢皮球
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
请问BOD、COD、N-Hex、T-N、T-P在生物学上分别代表什么,具体指什么?
已经有5人回复
新手。。请教大家脱TMS的问题。。。
已经有6人回复
偶联剂570的用法问题
已经有14人回复
气相色谱-质谱联用法测定PVC样品中六种邻苯二甲酸酯的不确定度评定
已经有32人回复
重大问题,有谁知道pMD18-t等Amp+抗性载体中AmpR的启动子序列是什么?
已经有3人回复
【课后答案】有机化学(R.T.莫里森)
已经有117人回复
帮看看es&t 审稿意见
已经有22人回复
【转帖】Delphi代码的标准风格
已经有5人回复
【交流讨论】今年赴英国联合培养竟然被签证官要求申T5(更新:已拿到T4签证)
已经有28人回复
【求助/交流】急求关于“制备T载体”的方法及外文文献
已经有3人回复

2楼2011-06-06 15:25:52









回复此楼