Delphi总结使用TStrings的一些技巧

[delphi]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. 先把要讨论的几个属性列出来:  
  2. 1、CommaText  
  3. 2、Delimiter & DelimitedText  
  4. 3、Names & Values & ValueFromIndex   
  5. 先看第一个:CommaText。怎么用呢?用代码说话:  
  6. const  
  7.   constr :String = 'aaa,bbb,ccc,ddd';  
  8. var  
  9.   strs :TStrings;  
  10.   i :Integer;  
  11. begin  
  12.   strs := TStringList.Create;  
  13.   strs.CommaText := constr;  
  14.   for i := 0 to Strs.Count-1 do  
  15.     ShowMessage(Strs[i]);  
  16. end;  
  17. 执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。  
  18. 也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以'',''为分割符,分段添加到TStrings中。  
  19. 那么如果不是以'',''来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。  
  20. const  
  21.   constr :String = 'aaa\bbb\ccc\ddd';  
  22. var  
  23.   strs :TStrings;  
  24.   i :Integer;  
  25. begin  
  26.   strs := TStringList.Create;  
  27.   strs.Delimiter := '\';  
  28.   strs.DelimitedText := constr;  
  29.   for i := 0 to Strs.Count-1 do  
  30.     ShowMessage(Strs[i]);  
  31. end;  
  32. 可以看到, 显示的效果和第一个例子是一模一样的。解释一下:  
  33. Delimiter为分隔符,默认为:'',''。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后会把这个字符串按Delimiter的字符添加到TStrings中。  
  34. 说到这里,有想起一个属性,QuoteChar。其默认值为:''"''(不包括单引号)  
  35. 有何用呢?看例子:  
  36. const  
  37.   constr :String = '"aaa"\"bbb"\"ccc"\"ddd"';  
  38. var  
  39.   strs :TStrings;  
  40.   i :Integer;  
  41. begin  
  42.   strs := TStringList.Create;  
  43.   strs.Delimiter := '\';  
  44.   strs.DelimitedText := constr;  
  45.   for i := 0 to Strs.Count-1 do  
  46.     ShowMessage(Strs[i]);  
  47. end;  
  48. 显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?  
  49. 再来看一个例子:  
  50. const  
  51.   constr :String = '|aaa|\|bbb|\|ccc|\|ddd|';  
  52. var  
  53.   strs :TStrings;  
  54.   i :Integer;  
  55. begin  
  56.   strs := TStringList.Create;  
  57.   strs.Delimiter := '\';  
  58.   strs.QuoteChar := '|';  
  59.   strs.DelimitedText := constr;  
  60.   for i := 0 to Strs.Count-1 do  
  61.     ShowMessage(Strs[i]);  
  62. end;  
  63. 显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。  
  64. 但是还要多说一句,当Delimiter为:'',''而QuoteChar为:''"''时,DelimitedText和CommaText是同等的。  
  65. 最后要说的三个是:Names & Values & ValueFromIndex。  
  66. 看看下面的代码:  
  67. const  
  68.   constr :String = '0=aaa,1=bbb,2=ccc,3=ddd';  
  69. var  
  70.   strs :TStrings;  
  71.   i :Integer;  
  72. begin  
  73.   strs := TStringList.Create;  
  74.   strs.CommaText := constr;  
  75.   for i := 0 to strs.Count-1 do  
  76.   begin  
  77.     ShowMessage(strs.Names[i]);  
  78.     ShowMessage(strs.Values[strs.Names[i]]);  
  79.     ShowMessage(strs.ValueFromIndex[i]);  
  80.   end;  
  81. end;  
  82. 通过这个例子不难看出:  
  83. 这个时候strs中的内容是:  
  84. 0=aaa  
  85. 1=bbb  
  86. 2=ccc  
  87. 3=ddd  
  88. 而Names中则是:  
  89. 0  
  90. 1  
  91. 2  
  92. 3  
  93. 在Values中则是:  
  94. aaa  
  95. bbb  
  96. ccc  
  97. ddd  
  98. 这几个属性用来处理ini文件是非常好用的。  
  99. 另外说一句,在Delphi6下似乎没有ValueFromIndex这个属性  

转载于:https://www.cnblogs.com/qingsong/p/3507169.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值