Mi piacerebbe avere una funzione che richiede un dizionario di stringa, matrice di varianti. Così può essere chiamato con:Posso dichiarare un dizionario con array dinamico come tipo di valore?
searchDictionary := TDictionary<string, array of variant>;
searchDictionary.Add('KEY_NAME', ['X01%', '%D01']);
aValue := TDtoClass.Search(searchDictionary)
Attualmente sto ottenere tale risultato con
searchDictionary := TDictionary<string, TList<variant>>.Create;
searchDictionary.Add('BIN_NAME', TSearch.Values(['X01%', '%D01']));
dove tsearch è una classe che espone:
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;
Quello che vorrei fare è:
searchDictionary.Add('BIN_NAME', ['X01%', '%D01']);
invece di:
searchDictionary.Add('BIN_NAME', TSearch.Values(['X01%', '%D01']));
Qualsiasi aiuto sarà molto apprezzato.
Che cosa non funziona? Non viene compilato (e in quale posizione)? – jpfollenius
.Add (Nome: stringa; a: array of const)? – Marck
In realtà si tratta di una matrice dinamica anziché di una matrice aperta. Gli array aperti esistono solo come parametri di procedura. Ho aggiornato il titolo della domanda. –