TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的。
常规的用法大家都知道,现在来讨论它的一些高级的用法。
先把要讨论的几个属性列出来:
1、CommaText
2、Delimiter & DelimitedText
3、Names & Values & ValueFromIndex
先看第一个:CommaText。怎么用呢?用代码说话:
const
constr :String = 'aaa,bbb,ccc,ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.CommaText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
执行了这段代码后,可以看到ShowMessage显示出来的分别是:aaa bbb ccc ddd。
也就是说,strs.CommaText := constr这一句的作用,就是把一个字符串以','为分割符,分段添加到TStrings中。
那么如果不是以','来分割,又该怎么做呢?现在看第二个例子。使用Delimiter和DelimitedText。
const
constr :String = 'aaa/bbb/ccc/ddd';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '/';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
可以看到, 显示的效果和第一个例子是一模一样的。解释一下:
Delimiter为分隔符,默认为:','。DelimitedText就是按Delimiter为分隔符的一个串,得到赋值后回把这个字符串按Delimiter的字符添加到TStrings中。
说到这里,有想起一个属性,QuoteChar。其默认值为:'"'(不包括单引号)
有何用呢?看例子:
const
constr :String = '"aaa"/"bbb"/"ccc"/"ddd"';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '/';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
显示出来的仍然是aaa bbb ccc ddd。为什么不是:"aaa" "bbb" "ccc" "ddd"呢?
再来看一个例子:
const
constr :String = '|aaa|/|bbb|/|ccc|/|ddd|';
var
strs :TStrings;
i :Integer;
begin
strs := TStringList.Create;
strs.Delimiter := '/';
strs.QuoteChar := '|';
strs.DelimitedText := constr;
for i := 0 to Strs.Count-1 do
ShowMessage(Strs[i]);
end;
显示出来的又是aaa bbb ccc ddd。对比一下,应该不难明白吧?这个就不多说了,用得也不多。
但是还要多说一句,当Delimiter为:','而QuoteChar为:'"'时,DelimitedText和CommaText是同等的。
最后要说的三个是:Names & Values & ValueFromIndex。
看看下面的代码:
const
constr :String = 'a=1,b=2,c=3';
var
SL:TStrings;
I:Integer;
begin
SL:= TStringList.Create;
SL.CommaText := constr;//SL内容为a=1 b=2 c=3
forI := 0 to SL.Count-1 do
begin
ShowMessage(SL.Names[I]); //分别为a,b,c
ShowMessage(SL.Values[SL.Names[I]]);//分别为1,2,3
ShowMessage(SL.ValueFromIndex[I]);//分别为1,2,3
end;
end;
这几个属性用来处理ini文件是非常好用的。
分享到:
相关推荐
在Unity3D编辑器中一键将文件夹下的Proto文件转成C#文件。 此资源中包含Protobuf3相关dll和生成工具压缩包。
企业员工岗前培训管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
软考冲刺 - 软考相关知识点
本程序对mimo系统中中最大比合并和空时编码的性能研究
史上最强NDK入门项目实战
JAVA快速开发框架源码 企业通用开发平台框架源码 系统说明如下: 1、系统源码导入Eclipse、MyEclipse等IDE发布到应用服务器,例如Tomcat上即可运行。 2、导入系统后请将系统编码设置为UTF-8,不是GBK。SQL导入也是UTF8编码。 3、导入后如果出现感叹号,请修改实际的Java Build Path。 4、登录页面:4.1、Hibernate版本访问地址:http://localhost:8080/jeefw/login.jsp 4.2、Mybatis版本访问地址:MySQL版本和Oracle版本都是http://localhost:8080/ + 项目名,账号:admin 密码:1 5、系统默认数据库是mysql。Hibernate版本的applicationContext.xml配置文件里的mysql用户名是root,密码是123456; Mybatis版本在 dbconfig.properties修改。如果和您的不一样,请修改即可运行。 6、基于Bootstrap的Java企业通用开发平台框架只引用了一个第三方jar包
流媒体线程下载,播放,(支持断点)
一个基于C语言开发的面向底层设备驱动的驱动库项目资源
Springboot博客网站源码 运行环境:idea+mysql5.7+jdk1.8+maven3 项目技术:SpringBoot MyBatis MySQL JQuery html 源码描述:游客可以浏览文章, 游客可以登录注册成用户,发布文章 管理自己的文章,评论和回复, 点赞评论回复文章等 管理员可以对整个系统用户管理,文章管理,分类管理,角色权限管理,评论管理等等
c语言涂格子游戏源码
按钮点击WIN8 磁贴效果
c++数字雨实现 c++
http服务器的实现
技术资料分享FATFS浅谈很好的技术资料.zip
# 基于Spring Boot和MyBatis Plus的帖子管理系统 ## 项目简介 本项目是一个基于Spring Boot和MyBatis Plus的帖子管理系统,旨在提供一个高效、易用的平台来管理帖子内容。系统整合了多种主流框架和技术,包括Spring MVC、MyBatis Plus、Redis、Elasticsearch等,支持用户登录、帖子发布、点赞、收藏、搜索等功能。 ## 项目的主要特性和功能 ### 主流框架 特性 Spring Boot 2.7.x快速开发框架,简化配置。 Spring MVC用于构建Web应用程序。 MyBatis Plus简化MyBatis操作,支持分页、自动生成SQL等。 Spring AOP面向切面编程,用于日志记录、权限校验等。 Spring Scheduler定时任务调度。 Spring 事务注解简化事务管理。 ### 数据存储
1
Android任务管理器源码
高校毕业生就业管理系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B
代驾应用系统 SSM毕业设计 附带论文 启动教程:https://www.bilibili.com/video/BV1GK1iYyE2B