• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Delphi总结使用TStrings的一些技巧

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
  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这个属性  

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap