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

Jak*_*ays 5 delphi delphi-2010

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

List.Names[I]:= name;
Run Code Online (Sandbox Code Playgroud)

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

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

List[I]:= name=value
Run Code Online (Sandbox Code Playgroud)

问题是我在名称/值对的值部分存储了大量的字符串值

name=value1,value2,value3,value4,value5,value6,value7,value8,value9,value10
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Dav*_*nan 9

您需要读取表示名称/值对的项的索引.做到这一点的调用IndexOfName().然后你修改那个项目.所以代码看起来有点像这样:

Index := List.IndexOfName(OldName);
if Index=-1 then
  // handle error
List[Index] := NewName + List.NameValueSeparator + List.ValueFromIndex[Index];
Run Code Online (Sandbox Code Playgroud)

由于您使用的是支持泛型的Delphi,因此您可能会感觉更好TDictionary<string, string>.

即便如此,更改项目的名称并非易事.翻译成字典,代码如下所示:

Item := Dict.ExtractPair(OldName);
Dict.Add(NewName, Item.Value);
Run Code Online (Sandbox Code Playgroud)