文字列のリストを含むテキスト ファイル (たとえば、自動置換に使用できるキーと値で区切られたカンマなど) を作成し、各キーと値のペアをTDictionary<string, string>
. ディクショナリにデータを入力するにはどうすればよいですか?
1538 次
2 に答える
4
あなたのコメントから、カンマで区切られたいくつかのキーと値のペアを辞書に引き出す方法を知りたいようです。基本的な例を次に示します。
procedure PopulateKeyValueDict(Strings: TStrings;
Dict: TDictionary<string, string>);
var
CommaPos: Integer;
Line: string;
Key, Value: string;
begin
for Line in Strings do
begin
CommaPos := Pos(',', Line);
if CommaPos=0 then
raise Exception.CreateFmt(
'Could find comma separated key/value pair in ''%s''',
[Line]
);
Key := Copy(Line, 1, CommaPos-1);
Value := Copy(Line, CommaPos+1, MaxInt);
Dict.Add(Key, Value);
end;
end;
エラーチェックなどを追加したいと思うかもしれませんが、その方法はすでに知っていると思います。この例は、最初のコンマで行を分割する方法と、辞書に入力する方法を示しています。
それを使用するには、ファイルをTStrings
オブジェクトに転送する必要があります。それは日常的です:
var
Strings: TStringList;
....
Strings := TStringList.Create;
try
Strings.LoadFromFile(FileName);
PopulateKeyValueDict(Strings, Dict);
finally
Strings.Free;
end;
于 2012-12-21T09:00:52.287 に答える
1
1 対 1 のキーと値の関係しかない場合 (3 つのキーワード "apple" と "apples" と "McIntoshes" が "McIntosh" に変換されるのとは異なります)、おそらく最も簡単な方法は TStringList を使用することです。それを提供する
- Uファイルを正確に
Key=Value
行で作成しますKey,Value
- 大文字と小文字を区別するか、ファイルを大文字にする必要があります。
次に、http://docwiki.embarcadero.com/Libraries/XE3/en/System.Classes.TStrings.Valuesを使用します
少しスピードアップするには、IniFiles ユニットの THashedStringList を使用できます。JclXMLユニットのJCLにも同様のものがありました。
于 2012-12-21T10:55:45.743 に答える