5

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

List.Names[I]:= name;

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

还是我必须对整个字符串进行完整更新

List[I]:= name=value

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

例子

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

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

谢谢

4

1 回答 1

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);
于 2013-03-27T13:26:19.000 回答