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 に答える