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文件是非常好用的。
分享到:
相关推荐
在 Delphi 程序中,首先需要在 `Interface` 部分的 `Uses` 节添加 `IniFiles` 单元,然后在 `Var` 部分声明一个 `TIniFile` 类型的变量,如 `MyIniFile`。 3. **打开 INI 文件** 使用 `TIniFile.Create()` 方法...
KeyList是一个TStrings类型的变量,用来存储字段值;PickList同样是一个TStrings类型,它与KeyList中的序号对应,用于设置替换显示的内容。通过设置showimageandtext属性,我们可以选择是否同时显示图像和文本,若设...
3. **读取指定节的所有行**:`ReadSectionValues` 方法可以读取指定节的所有行(包括关键字、等号、值),并存储在一个 `TStrings` 变量中。 ```pascal MyIniFile.ReadSectionValues('SectionName', SectionValues...
//取得SQLServer字段的类型,返回相应Delphi变量类型 function GetColumnType(AType: integer): string; //取得SQLServer字段的类型,返回相应字符串 function GetDBColumnType(AType: integer): string;...
传统的线性表显示相对容易,Delphi的Memo、ListBox、StringGrid等组件,以及其他含有TStrings类型属性的对象,可以轻松地用来显示线性结构。但是,把树形结构直观地显示在表单上相对困难。为了克服这一难点,Delphi...
以上代码展示了如何定义`TDatabaseName`类型,并通过`FDatabaseName`变量和`SetDatabaseName`方法来实现特性的读写操作。 #### TDatabaseName 特性编辑器实现 接下来,作者详细介绍了`TDatabaseName`特性编辑器的...
类常量、类变量、类属性与静态类方法(Class const/var/property and Static Class Methods)是增强 Delphi 类型系统的关键特性。它们允许你在类级别定义共享的、不可变的常量(Class Consts)、变量(Class Vars)...
*.mdb"` 表示只获取 `.exe` 和 `.mdb` 类型的文件。 - **实现逻辑**: 1. 创建一个 `TFileListBox` 对象。 2. 设置文件列表框的掩码属性。 3. 设置文件列表框的目录属性。 4. 清空传入的 `List` 并添加 `...
- **0038**:强类型的变量声明技巧。 - **0039**:变量的作用域与生命周期。 - **0040**:过程与函数的参数传递技巧。 - **0041**:数组的高效使用技巧。 - **0042**:内存泄漏的检测与避免。 - **0043**:...
0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的阶乘和 40 0063 如何实现最大公约数 40 0064 如何实现最小公倍数 41 ...
0060 TStrings与TStringList的使用 37 0061 如何实现窗体文件转换 37 第3章 程序算法 39 3.1 计算类算法 40 0062 如何计算1~100的阶乘和 40 0063 如何实现最大公约数 40 0064 如何实现最小公倍数 41 ...