Ho una funzione in cui memorizzo alcune coppie di valori-chiave e quando eseguo l'iter ricevo questo errore due volte: [Errore dcc32] App.pas (137): E2149 La classe non ha una proprietà predefinita. Qui fa parte del mio codice:Delphi TDictionary iteration
function BuildString: string;
var
i: Integer;
requestContent: TDictionary<string, string>;
request: TStringBuilder;
begin
requestContent := TDictionary<string, string>.Create();
try
// add some key-value pairs
request := TStringBuilder.Create;
try
for i := 0 to requestContent.Count - 1 do
begin
// here I get the errors
request.Append(requestContent.Keys[i] + '=' +
TIdURI.URLEncode(requestContent.Values[i]) + '&');
end;
Result := request.ToString;
Result := Result.Substring(0, Result.Length - 1); //remove the last '&'
finally
request.Free;
end;
finally
requestContent.Free;
end;
end;
ho bisogno di raccogliere le informazioni da ogni elemento presente nel dizionario. Come posso ripararlo?
'var S: stringa; Coppia: TPair; iniziare per Pair in YourDictionary do S: = Pair.Key + Pair.Value; fine; ' –
TLama
Usa' per AKey in requestContent.Keys fa begin request.Append (AKey + '=' + TIdURI.Encode (requestContent [AKey]) + '&'); ... etc.'. Devi dichiarare 'AKey' come stringa, ovviamente. –
@RudyVelthuis Con i dizionari, è quasi sempre meglio iterare su coppie che su chiavi, che invariabilmente si traducono in codice più efficiente. Nel caso del dizionario Delphi, l'iteratore della coppia evita qualsiasi necessità di calcolare l'hash codici, ed eseguire sondaggi –