5

文字列の辞書、バリアントの配列を取る関数が欲しいです。したがって、次のように呼び出すことができます。

  searchDictionary := TDictionary<string, array of variant>;
  searchDictionary.Add('KEY_NAME', ['X01%', '%D01']);
  aValue := TDtoClass.Search(searchDictionary)

私は現在これを達成しています

  searchDictionary := TDictionary<string, TList<variant>>.Create;
  searchDictionary.Add('BIN_NAME', TSearch.Values(['X01%', '%D01']));

ここで、Tsearch は以下を公開するクラスです。

class function TSearch.Values(const arguments: array of variant): TList<variant>;
var
list : TList<variant>;
item: variant;
begin
    list := TList<variant>.Create;
    for item in arguments do
    begin
      list.Add(item);
    end;
    Result := list;           
end;

私がやりたいことは次のとおりです。

searchDictionary.Add('BIN_NAME', ['X01%', '%D01']);

それ以外の:

searchDictionary.Add('BIN_NAME', TSearch.Values(['X01%', '%D01']));

どんな助けでも大歓迎です。

4

2 に答える 2

9

ディクショナリの宣言には問題はありませんが、値を追加するのは少し難しいかもしれません。特別な構造を使用して、必要なバリアント配列を取得できます。

var
  searchDictionary: TDictionary<string, TArray<variant>>;
begin
  searchDictionary.Add('BIN_NAME', TArray<variant>.Create('X01%', '%D01'));
end;
于 2012-06-29T10:58:25.300 に答える
0

バリアントの配列の型を宣言して、必要に応じてより多くのコードを実行できます。

type
  TDynamicArrayOfVariant = array of Variant;

var
  searchDictionary: TDictionary<string, TDynamicArrayOfVariant>;
begin
  searchDictionary.Add('BIN_NAME', ['X01%', '%D01']);
end;
于 2016-05-20T14:12:31.823 に答える