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 回答