是否可以更新特定TStringList名称/值对的Name字符串?
List.Names[I]:= name;
我知道名字是一个只读属性,我想知道是否还有另一种我不知道的方式?
或者我是否必须对整个字符串进行整个更新
List[I]:= name=value
问题是我在名称/值对
的值部分存储了大量字符串值例如
name=value1,value2,value3,value4,value5,value6,value7,value8,value9,value10
我宁愿只更新名称部分9因为这就是我需要做的所有事情)
感谢
答案 0 :(得分:9)
您需要读取表示名称/值对的项目的索引。通过致电IndexOfName()
来做到这一点。然后你修改那个项目。所以代码看起来有点像这样:
Index := List.IndexOfName(OldName);
if Index=-1 then
// handle error
List[Index] := NewName + List.NameValueSeparator + List.ValueFromIndex[Index];
由于您使用的是支持泛型的Delphi,因此使用TDictionary<string, string>
可能会更好。
即便如此,更改项目的名称并非易事。翻译成字典,代码如下所示:
Item := Dict.ExtractPair(OldName);
Dict.Add(NewName, Item.Value);