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这个属性

Delphi总结使用TStrings的一些技巧的更多相关文章

  1. Delphi IDE使用的一些主要技巧

    Delphi IDE使用的一些主要技巧 1.查找和替换 (1)<ctrl>+F[1]:选择页“Find”,进行查找,则根据查找方向继续查找.选择页“Findin Files”,则进行该工程 ...

  2. TStrings的一些技巧(转)

    TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的.常规的用法大家都知道,现在来讨论它的一些高级的用法.先把要讨论的几个属性列出来:1.CommaText2.Delimiter ...

  3. Delphi 2007体验!

    Delphi 2007体验! baidu 内容摘要:CodeGear(From Borland) 公司公布了最新的Delphi 2007 For Win32版本号.作为一个 Delphi 的使用者,第 ...

  4. delphi XE5下安卓开发技巧

    delphi XE5下安卓开发技巧 一.手机快捷方式显示中文名称 project->options->Version Info-label(改成需要显示的中文名即可),但是需要安装到安卓手 ...

  5. Delphi之TStrings和TStringLists类

    Delphi之TStrings和TStringLists类 有些类不是组件,但它们支持存在的组件.这些类是其他组件的典型属性,直接由TPersistent派生,如TStrings.TCanvas和TC ...

  6. Delphi三层开发小技巧:TClientDataSet的Delta妙用

    Delphi三层开发小技巧:TClientDataSet的Delta妙用 转载 2014年10月13日 09:41:14 标签: 三层 / ClientDataSet 318 from :http:/ ...

  7. Delphi开发的一些技巧

    [Delphi]Delphi开发的一些技巧 一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then - ...

  8. Delphi操作ACCESS技巧集

    1.DELPHI中操作access数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//在之前us ...

  9. [Delphi]Delphi开发的一些技巧

    一.提高查询效率先进行准备查询操作: CustomerQuery.Close; if not (CustomerQuery.Prepared) then -->查询是否已准备好 Customer ...

随机推荐

  1. ural1097 Square Country 2

    Square Country 2 Time limit: 1.0 secondMemory limit: 64 MB The Square Parliament of the Square count ...

  2. NSTimer相关方法

    - (void)fire; //立即触发定时器 - (NSDate *)fireDate;//开始时间 - (void)setFireDate:(NSDate *)date;//设置fireData, ...

  3. JAVA的RSS处理

    一:什么是RSS RSS(really simple syndication) :网页内容聚合器.RSS的格式是XML.必须符合XML 1.0规范. RSS的作用:订阅BLOG,订阅新闻二:RSS的历 ...

  4. sql server 日期转换函数 convert()

    --内容来自:http://hi.baidu.com/muqingz/item/8fb7b3ca8a485b0cac092f7b Select CONVERT(varchar(100), GETDAT ...

  5. JSONObject转换JSON之将Date转换为指定格式(转)

    项目中,经常会用JSONObject插件将JavaBean或List<JavaBean>转换为JSON格式的字符串,而JavaBean的属性有时候会有java.util.Date这个类型的 ...

  6. css hack总结

    虽然说,现在讨论css hanck已经过时了,不过了解下还是好的. 各游览器常用兼容标记一览表: 标记 IE6 IE7 IE8 FF Opera Sarari [*+><] √ √ X X ...

  7. HDU 1317(Floyd判断连通性+spfa判断正环)

    XYZZY Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  8. Restful based service 的跨域调用

    1.关于跨域, w3c的官方文档:https://www.w3.org/TR/cors/ 2.有时间再整理吧. <html> <head> <script src=&qu ...

  9. CodeForces 76E Points

    给出n个点,求任意两点间距离的平方和. 暴力显然超时,可以把公式写出来,化简一下,发现预处理一下后缀和就可以o(n)出解了. #include<cstdio> #include<cs ...

  10. PHP中对mysql预编译查询语句的一个封装

    原文地址:http://chen-shan.net/?p=474 为了防止sql注入,我们都使用过mysqli这个类,但是每次都需要绑定参数,绑定结果等,比较麻烦,所以可以把这些重复的语句封装成一个函 ...