主页C++ Builder 资料C++ Builder 参考手册System 字符串TStrings
C++ Builder 串口控件
C++ Builder 编程技巧
C++ Builder 操作指南
C++ Builder 参考手册
基础知识
cfloat 浮点数
cmath 数学函数
cstdlib 标准库函数
System 字符串
 • UnicodeString
 • UTF8String
 • TStringList
 • TStrings
   · 属性
   · 方法
 • String
 • AnsiString
 • AnsiStringBase
 • AnsiStringT
 • RawByteString
 • UCS4String
 • WideString
 • EnumToStr
 • FloatToStr
 • FloatToStrF
 • FormatFloat
 • IntToStr
 • UIntToStr
 • IntToHex
 • StrToEnum
 • StrToFloat
 • StrToFloatDef
 • StrToInt
 • StrToIntDef
 • StrToInt64
 • StrToInt64Def
 • StrToUInt64
 • StrToUInt64Def
 • TFloatFormat
 • GetUnicodeCategory
 • IMLangCodePages
 • StringReplace
System 日期和时间
System.Math.hpp 数学函数
其他数据类型
VCL 基础类
VCL 应用程序
Pictures 图片
Graphics 绘图
Additional 控件
System 控件
A ~ Z 字母顺序排列的目录
网友留言/技术支持
TStrings - 字符串列表的父类,纯虚类

属性方法事件返回 TStrings 类

属性 类型 描述
public:    
Count int 字符串的个数,只读属性。
Strings 属性里面一共有 Count 个字符串,从 Strings[0] ~ Strings[Count-1]
Strings UnicodeString
[int Index]
字符串列表里面的第 Index 个字符串,可读写属性。
Strings 属性里面一共有 Count 个字符串,从 Strings[0] ~ Strings[Count-1]
把 Strings 属性里面的所有的字符串连接在一起成为一个完整的字符串,使用 Text 属性。
Text UnicodeString 字符串列表里面所有的字符串连接起来,每个字符串之间都有一个换行符,就像一个文本文件的格式,可读写属性。换行符为 LineBreak 属性的字符串,默认为 L"\r\n"。给 Text 属性赋值,会把赋值的字符串用 LineBreak 属性分割为字符串列表,放在 Strings 属性里面。
LineBreak UnicodeString 换行符,可读写属性,默认值为 L"\r\n",即回车 (U+0D) 和换行 (U+0A) 两个字符。请参考 Text 属性。
Delimiter WideChar 用单个字符分割字符串的分割符,可读写属性。给 DelimitedText 属性赋值,会把赋值的字符串用 Delimiter 或空格,制表符等不可打印的字符等分割,由 StrictDelimiter 属性指定分割方式。与 LineBreak 不同的是:Delimiter 是以单个字符分割,LineBreak 是以字符串分割;Delimiter 分隔符之间的内容如果用引号 (由 QuoteChar 属性规定的字符) 引起来的字符串不被分割,LineBreak 不检查引号,只要发现分割符一律都分割。
QuoteChar WideChar 引号字符,可读写属性,和 Delimiter 属性配合使用,分割符如果在引号里面,当作普通字符,不分割字符串。QuoteChar 默认值为双引号 L'"'。
StrictDelimiter bool 严格使用 Delimiter 分割符,可读写属性。
true: 只使用 Delimiter 属性的字符分割给 DelimitedText 属性赋值的字符串。
false: Delimiter 属性、空格、制表符等不可打印的字符都会分割字符串。
DelimitedText UnicodeString 用 Delimiter 分割符分割的字符串,可读写属性。必须先设定 Delimiter 和 StrictDelimiter 属性的值,然后再给 DelimitedText 赋值,会把赋值的字符串分割到 Strings 属性里面。
CommaText UnicodeString 逗号分割的字符串,可读写属性。这个给属性赋值,始终使用逗号 L',' 作为分割符,使用双引号 L'"' 作为引号字符,相当于 Delimiter = L',' 并且 QuoteChar = L'"' 时的 DelimitedText。
Names UnicodeString
[int Index]
如果字符串列表是成对的名字和值列表,Names[Index] 是第 Index 个名字,可读写属性。如果字符串列表的第 Index 项 Strings[Index] 不是一对名字和值 Names[Index] 是空字符串。名字和值请参考 NameValueSeparator 属性。
KeyNames UnicodeString
[int Index]
如果字符串列表是成对的名字和值列表,Names[Index] 是第 Index 个名字,可读写属性。如果字符串列表的第 Index 项 Strings[Index] 不是一对名字和值 Names[Index] 是整个 Strings[Index] 字符串。名字和值请参考 NameValueSeparator 属性。
Values UnicodeString
[UnicodeString Name]
如果字符串列表是成对的名字和值列表,Values[Name] 是名字为 Name 的项目的值,可读写属性。名字和值请参考 NameValueSeparator 属性。
ValueFromIndex UnicodeString
[int Index]
如果字符串列表是成对的名字和值列表,ValueFromIndex[Index] 是第 Index 项的值,可读写属性。名字和值请参考 NameValueSeparator 属性。
NameValueSeparator WideChar 名字和值之间的分割符,可读写属性,默认值为等于号 L'='。
字符串列表文字 (Text 属性) 是这样的结构:L"名字1=值1\r\n名字2=值2\r\n名字3=值3\r\n……";
字符串列表 (Strings 属性) 每一项就是一对名字和值:Strings[0] = L"名字1=值1"; Strings[1] = L"名字2=值2"; Strings[3] = L"名字3=值3"; ……,名字和值之间用 NameValueSeparator 分割。
Text 和 Strings 属性之间可以互相转化,由 LineBreak 分割每一对名字和值,默认为回车换行。
Objects TObject *
[int Index]
字符串列表的每一项可以关联一个从 TObject 继承过来的类的对象,Objects[Index] 是第 Index 项关联的对象,可读写属性。
TStrings 不会自动维护每个 Objects 的分配和销毁,只是做字符串列表和对象之间的关联,
TStrings 继承的 TStringList 增加了 OwnsObjects 属性来设定是否自动维护 Objects。
Updating bool 是否正在更新字符串列表,只读属性。
当改变 TStrings 的属性值的时候,会处于更新状态,Updating 属性为 true,更新完成,Updating 为 false。
可以调用 BeginUpdate 方法让 Updating 为 true,告诉相关程序代码这个字符串列表在处于更新状态,调用 EndUpdate 方法让 Updating 为 false。BeginUpdate 和 EndUpdate 必须成对出现,EndUpdate 和 EndUpdate 次数相等的时候,Updating 恢复 false 状态。BeginUpdate 和 EndUpdate 的内部计数器为 UpdateCount 属性,是 protected 访问权限的。
如果要更新字符串列表,例如 Memo 的 Lines 属性,先调用 BeginUpdate 使 Updating 属性为 true,可以防止在多次更新的过程中刷新显示,当更新完成之后,调用 EndUpdate 告诉字符串列表更新完成了,内部计数器归零,Updating 属性为 false,才会刷新显示。
Capacity int 字符串列表的容量,可读写属性。
容量是最多能存放字符串的个数,而不等于实际上字符串的个数。就像一个瓶子,装满水的容量是 Capacity,而实际上只装了 Count 这些水,所以 Capacity ≥ Count。这样的分配内存的方法,可以减少分配内存的次数,加快字符串列表的处理速度。
TStrings 类没有实现 Capacity 的写操作,需要让子类来实现具体功能。
DefaultEncoding TEncoding 默认编码,只读属性。请参考 Encoding 属性。
这个属性的默认值为 TEncoding::Default,在中国大陆,是代码页 936 (GBK 编码)。
Encoding TEncoding 当前使用的编码,只读属性,
在从未调用过 LoadFromFile 或 LoadFromStream 的时候,这个属性值为 NULL;
调用 LoadFromFile 或 LoadFromStream 之后,Encoding 为自动判断文件的编码 (根据 BOM),如果无法判断文件的编码,会等于 DefaultEncoding 属性值。
StringsAdapter _di_IStringsAdapter IStringsAdapter 接口,可读写属性。为 OLE 应用使用,否则此属性为 NULL。
这个属性为 TStrings 内部使用的。
创建 StringsAdapter 可以使用 GetOleStrings 和 SetOleStrings。
WriteBOM bool 把字符串列表存入文件或流,虽否储存 BOM,可读写属性,默认为 true。
这个属性影响 SaveToFile 和 SaveToStream 方法。
TrailingLineBreak bool 最后一行末尾是否添加换行符 L"\r\n" (LineBreak 属性字符串),可读写属性,默认为 true。
请参考 LineBreak 属性。
UseLocale bool 字符串比较大小的时候,是否使用本地语言规则,可读写属性,默认为 true。
true: 使用 AnsiCompareStr 和 AnsiCompareText,例如中国大陆,采用汉字读音的拼音顺序;
false: 使用 CompareStr 和 CompareText,使用 UNICODE 编码值的顺序,与地区习惯无关。
Options TStringsOptions 字符串列表的选项,可读写属性,可以是以下表格里面的值的组合,也可以为空。
对应的属性
soStrictDelimiterStrictDelimiter
soWriteBOMWriteBOM
soTrailingLineBreakTrailingLineBreak
soUseLocaleUseLocale
例如 StrictDelimiter 属性为 true,Options 里面会包含 soStrictDelimiter 值,反之亦然。
用 Options.Contains(el) 判断是否包含某个值,用 << 和 >> 添加和移除某个值,例如:
if(!sl->Options.Contains(soStrictDelimiter))
  sl->Options = sl->Options << soStrictDelimiter;
protected:    
UpdateCount int BeginUpdate 和 EndUpdate 方法的内部计数,只读属性。
这个是 protected 访问权限的,仅供内部使用,详细说明请参考 Updating 属性。

属性方法事件返回 TStrings 类

下一页:方法

C++ 爱好者 -- Victor Chen 的个人网站 www.cppfans.com 辽ICP备11016859号