我想有一个函数,它接受字符串字典,变量数组。因此可以通过以下方式调用:
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']));
非常感谢任何帮助。
答案 0 :(得分:9)
虽然声明字典没有问题,但添加值可能会有些棘手。您可以使用特殊构造来获取所需的变量数组:
var
searchDictionary: TDictionary<string, TArray<variant>>;
begin
searchDictionary.Add('BIN_NAME', TArray<variant>.Create('X01%', '%D01'));
end;
答案 1 :(得分:0)
您可以为变量数组声明一个类型,以便根据需要执行更多代码:
type
TDynamicArrayOfVariant = array of Variant;
var
searchDictionary: TDictionary<string, TDynamicArrayOfVariant>;
begin
searchDictionary.Add('BIN_NAME', ['X01%', '%D01']);
end;