C++Builder从TStringList获取字符串:编译报错与取值为空问题排查
C++Builder中TStringList元素访问的正确方式
你遇到的两个问题都是C++Builder与Delphi的VCL类语法差异导致的,具体原因和解决方法如下:
关于
psl[i]无法编译:
Delphi支持直接用数组下标[]访问TStringList元素,但C++Builder的TStringList没有重载该运算符,必须通过Strings属性按索引访问元素,正确写法为psl->Strings[i]。关于
psl->Values[i]返回空字符串:Values属性的作用是通过键名获取对应键值,仅当TStringList中的元素是"Key=Value"格式的键值对时才生效。你当前的列表仅包含普通字符串,没有键值结构,用数字索引作为键名自然无法匹配到对应值,因此返回空。若要按索引访问普通字符串元素,同样使用Strings属性。
修正后的代码示例:
TStringList *psl = new TStringList; psl->Add(_D("String1")); psl->Add(_D("String2")); for (UINT i = 0; i < psl->Count; i++) { String s = psl->Strings[i]; // 正确访问索引i的元素 // 若要使用Values,需先添加键值对格式元素,示例: // psl->Add(_D("Key1=Value1")); // String sv = psl->Values[_D("Key1")]; // 通过键名获取对应值 } delete psl; // 记得释放内存,避免内存泄漏
内容的提问来源于stack exchange,提问作者user3161924
相关产品推荐
相关产品推荐

