TStringList 常用方法与属性

简介: var List: TStringList; i: Integer; begin List := TStringList.Create; List.Add('Strings1'); {添加} List.
  1. var
  2. List: TStringList;
  3. i: Integer;
  4. begin
  5. List := TStringList.Create;
  6. List.Add('Strings1'); {添加}
  7. List.Add('Strings2');
  8. List.Exchange(0,1); {置换}
  9. List.Insert(0,'Strings3'); {插入}
  10. i := List.IndexOf('Strings1'); {第一次出现的位置}
  11. List.Sort; {排序}
  12. List.Sorted := True; {指定排序}
  13. List.Count; {总数}
  14. List.Text; {文本集合}
  15. List.Delete(0); {删除, 0是第一个数据}
  16. List.LoadFromFile('c:\tmp.txt');{打开}
  17. List.SaveToFile('c:\tmp.txt'); {保存}
  18. List.Clear; {清空}
  19. List.Free; {释放}
  20. end;
  21. --------------------------------------------------------------------------------

  22. //读入字符串

  23. var
  24. List: TStringList;
  25. begin
  26. List := TStringList.Create;
  27. List.CommaText := 'aaa,bbb,ccc,ddd';
  28. //相当于: List.Text := 'aaa' + #13#10 + 'bbb' + #13#10' + 'ccc' + '#13#10' + 'ddd';


  29. ShowMessage(IntToStr(List.Count)); //4

  30. ShowMessage(List.Strings[0]); //aaa 跟下面句差不多

  31. ShowMessage(List[0]); //aaa


  32. List.Free;
  33. end;
  34. --------------------------------------------------------------------------------

  35. //置换分隔符

  36. var
  37. List: TStringList;
  38. begin
  39. List := TStringList.Create;
  40. List.Delimiter := '|';
  41. List.DelimitedText := 'aaa|bbb|ccc|ddd';

  42. ShowMessage(IntToStr(List.Count)); //4

  43. ShowMessage(List[0]); //aaa


  44. List.Free;
  45. end;
  46. --------------------------------------------------------------------------------

  47. //类似的哈希表操作法

  48. var
  49. List: TStringList;
  50. begin
  51. List := TStringList.Create;

  52. List.Add('aaa=111');
  53. List.Add('bbb=222');
  54. List.Add('ccc=333');
  55. List.Add('ddd=444');

  56. ShowMessage(List.Names[1]); //bbb

  57. ShowMessage(List.ValueFromIndex[1]); //222

  58. ShowMessage(List.Values['bbb']); //222


  59. //ValueFromIndex 可以赋值:

  60. List.ValueFromIndex[1] := '2';
  61. ShowMessage(List[1]); //bbb=2


  62. //可以通过 Values 赋值:

  63. List.Values['bbb'] := '22';
  64. ShowMessage(List[1]); //bbb=22


  65. List.Free;
  66. end;
  67. --------------------------------------------------------------------------------

  68. //避免重复值

  69. var
  70. List: TStringList;
  71. begin
  72. List := TStringList.Create;

  73. List.Add('aaa');

  74. List.Sorted := True; //需要先指定排序

  75. List.Duplicates := dupIgnore; //如有重复值则放弃


  76. List.Add('aaa');

  77. ShowMessage(List.Text); //aaa


  78. //Duplicates 有3个可选值:

  79. //dupIgnore: 放弃;

  80. //dupAccept: 结束;

  81. //dupError: 提示错误.


  82. List.Free;
  83. end;
  84. --------------------------------------------------------------------------------

  85. //排序与倒排序

  86. {排序函数}
  87. function DescCompareStrings(List: TStringList; Index1, Index2: Integer): Integer;
  88. begin
  89. Result := -AnsiCompareText(List[Index1], List[Index2]);
  90. end;

  91. procedure TForm1.Button1Click(Sender: TObject);
  92. var
  93. List: TStringList;
  94. begin
  95. List := TStringList.Create;

  96. List.Add('bbb');
  97. List.Add('ccc');
  98. List.Add('aaa');

  99. //未排序

  100. ShowMessage(List.Text); //bbb ccc aaa


  101. //排序

  102. List.Sort;
  103. ShowMessage(List.Text); //aaa bbb ccc


  104. //倒排序

  105. List.CustomSort(DescCompareStrings); //调用排序函数

  106. ShowMessage(List.Text); //ccc bbb aaa


  107. //假如:

  108. List.Sorted := True;
  109. List.Add('999');
  110. List.Add('000');
  111. List.Add('zzz');
  112. ShowMessage(List.Text); //000 999 aaa bbb ccc zzz

  113. end;
相关文章
|
9月前
|
机器学习/深度学习 数据可视化
Visual-RFT:基于强化学习的视觉语言模型微调技术研究
Visual-RFT 是一种创新的视觉语言模型微调技术,结合基于规则的可验证奖励与强化学习,克服了传统监督微调在数据稀缺场景下的局限。它通过渐进式推理和多样化响应生成,优化模型在对象检测、图像分类等任务中的表现,尤其适用于少样本学习。该方法采用组相对策略优化(GRPO)进行参数更新,简化了强化学习流程,同时保持高效性。实验结果表明,Visual-RFT 在细粒度分类和推理定位等任务中显著优于传统方法,展示了其在实际应用中的巨大潜力。
500 1
Visual-RFT:基于强化学习的视觉语言模型微调技术研究
|
12月前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
836 2
|
Windows
wmiprvse.exe是什么进程?
wmiprvse.exe cpu占用资源很高怎么禁用?
1340 5
|
10月前
|
人工智能 算法 机器人
OpenAI的GPT-5即将问世:目前我们所知道的一切
OpenAI的GPT-5即将问世:目前我们所知道的一切
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
129886 0
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
9778 0
关于Delphi中的静态数组、动态数组、检测数组上下界、copy数组
关于Delphi中的静态数组、动态数组、检测数组上下界、copy数组
511 0
关于Delphi中的静态数组、动态数组、检测数组上下界、copy数组
|
JavaScript 关系型数据库
Centos 7.X安装DB2 10.5
创建用户和组 groupadd -g 996 db2iadm1 groupadd -g 995 db2fadm1 groupadd -g 994 dasadm1 useradd -u 600 -g db2iadm1 -m -d /home/db2inst1 db2inst1 useradd -u .
4657 0
|
关系型数据库 MySQL
安装mysql提示3306端口已经被占用解决方案
今天遇到的问题是这样的,之前已经安装过mysql了,一直用的好好的,但是今天开启服务时报异常,无法启动。为了省事,于是想到卸载重装,在安装的过程中发现3306已经被占用,这也是一开始服务无法启动的原因。
3989 0