更新TStringList名称/值对中的名称值

时间:2013-03-27 13:23:07

标签: delphi delphi-2010

是否可以更新特定TStringList名称/值对的Name字符串?

List.Names[I]:= name;

我知道名字是一个只读属性,我想知道是否还有另一种我不知道的方式?

或者我是否必须对整个字符串进行整个更新

List[I]:= name=value

问题是我在名称/值对

的值部分存储了大量字符串值

例如

name=value1,value2,value3,value4,value5,value6,value7,value8,value9,value10

我宁愿只更新名称部分9因为这就是我需要做的所有事情)

感谢

1 个答案:

答案 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);