Mam funkcję, w której przechowuje się parę par klucz-wartość i kiedy I iteracji ich otrzymuję ten błąd dwa razy: [błąd dcc32] App.pas (137): E2149 Klasa nie ma właściwości domyślnej. Tutaj jest częścią mojego kodu:Delphi TDictionary iteracja
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;
muszę zebrać informacje z każdej pozycji w słowniku. Jak mogę to naprawić?
'var S: string; Para: TPair <łańcuch, ciąg>; rozpocząć dla Pair in YourDictionary do S: = Pair.Key + Pair.Value; end; ' – TLama
Użyj' dla AKey w requestContent.Keys zacznij request.Append (AKey + '=' + TIdURI.Encode (requestContent [AKey]) + '&'); ... itd. Musisz zadeklarować 'AKey' jako Ciąg znaków, oczywiście, –
@RudyVelthuis W słownikach, prawie zawsze lepiej jest powtarzać nad parami niż nad klawiszami, co nieodmiennie przekłada się na bardziej efektywny kod.W przypadku słownika Delphi iterator pary unika potrzeby obliczania skrótu kody i przeprowadź sondowanie –