Tôi có một chức năng mà tôi lưu trữ một số cặp khóa-giá trị và khi tôi lặp lại chúng tôi nhận được lỗi này hai lần: [dcc32 Lỗi] App.pas (137): Lớp E2149 không có thuộc tính mặc định. Dưới đây là một phần của mã của tôi: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;
tôi cần phải thu thập các thông tin từ mỗi mục trong từ điển. Làm thế nào tôi có thể sửa chữa nó?
'var S: string; Ghép nối: TPair; bắt đầu cho Pair trong YourDictionary làm S: = Pair.Key + Pair.Value; kết thúc; ' –
TLama
Sử dụng' cho AKey trong requestContent.Keys bắt đầu request.Append (AKey + '=' + TIdURI.Encode (requestContent [AKey]) + '&'); ... vv'. Bạn phải khai báo 'AKey' là String, tất nhiên, –
@RudyVelthuis Với từ điển, hầu như luôn luôn tốt hơn để lặp qua các cặp hơn các khóa. Làm như vậy lúc nào cũng dẫn đến mã hiệu quả hơn. Trong trường hợp của từ điển Delphi, trình lặp cặp tránh mọi tính toán băm –