-1

文字列のリストを含むテキスト ファイル (たとえば、自動置換に使用できるキーと値で区切られたカンマなど) を作成し、各キーと値のペアをTDictionary<string, string>. ディクショナリにデータを入力するにはどうすればよいですか?

4

2 に答える 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 を使用することです。それを提供する

  1. Uファイルを正確にKey=Value行で作成しますKey,Value
  2. 大文字と小文字を区別するか、ファイルを大文字にする必要があります。

次に、http://docwiki.embarcadero.com/Libraries/XE3/en/System.Classes.TStrings.Valuesを使用します

少しスピードアップするには、IniFiles ユニットの THashedStringList を使用できます。JclXMLユニットのJCLにも同様のものがありました。

于 2012-12-21T10:55:45.743 に答える