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. hide the navigationBar and tabBar

    [self.navigationController setNavigationBarHidden:YES animated:NO]; hidesBottomBarWhenPushed

  2. [Unity]背包效果-使用NGUI实现物品的拖拽效果Drag

    背包效果-使用NGUI实现物品的拖拽效果Drag 效果实现如图 对象层级关系图 PacketCell - Right 对象作为单元格背景 PacketContainer 对象作为单元格容器 Packe ...

  3. Android Studio的使用(二)--Debug调试

    使用Android Studio进行Debug调试,这里有一篇比较详细的介绍 http://www.2cto.com/kf/201506/408358.html 故不再重复介绍.

  4. android缓存之Lrucache 和LinkedHashMap

    两者的区别 网上有很多人使用软引用加载图片的多 ,但是现在已经不再推荐使用这种方式了,(1)因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的 ...

  5. 安装SqlServer2008后vs中dev控件消失

    点击红的的

  6. 已有 JS 模块化和打包方案收集

    模块化方案 RequireJS AMD 方案, 常用的 define 语法, 异步加载模块, 目前很多支持: 官网 http://requirejs.org/ Github https://githu ...

  7. git使用系列(一)

    git commit 的时候出现了问题: change not staged for commit. no changes added to commit(use "git add" ...

  8. 简单的字符串比较题 POJ 1936

    Description You have devised a new encryption technique which encodes a message by inserting between ...

  9. Mycat 安装配置

    下载https://github.com/MyCATApache/Mycat-download Mycat 需要jdk 环境,首先安装 jdk 安装完 jdk 环境以后 下载 mycat server ...

  10. 解决SSh连接过慢

    ssh 连接的时候特别慢 解决方法: 修改配置文件 /etc/ssh/sshd_config GSSAPIAuthentication yes --->no 81行左右 #UseDNS yes ...