मेरे पास एक ऐसा कार्य है जहां मैं कुछ कुंजी-मूल्य जोड़े संग्रहीत करता हूं और जब मैं उन्हें पुन: सक्रिय करता हूं तो मुझे यह त्रुटि दो बार मिलती है: [dcc32 त्रुटि] App.pas (137): E2149 कक्षा में डिफ़ॉल्ट संपत्ति नहीं है।डेल्फी TDictionary पुनरावृत्ति
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;
मैं शब्दकोश में प्रत्येक आइटम से जानकारी एकत्र की जरूरत है: यहाँ मेरी कोड का हिस्सा है। मेरे द्वारा यह कैसे किया जा सकता है?
'var S: string; जोड़ी: टीपीएआर <स्ट्रिंग, स्ट्रिंग>; YourDictionary में जोड़े के लिए शुरू करें एस: = जोड़ी। के + जोड़े। वैल्यू; अंत; ' – TLama
अनुरोध में AKey के लिए 'सामग्री का उपयोग करें। केंट्स अनुरोध शुरू करें। ऐपेंड (AKey +' = '+ TIdURI.Encode (requestContent [AKey]) +' &'); ... आदि '। आपको' AKey' घोषित करना होगा स्ट्रिंग, ज़ाहिर है। –
@RudyVelthuis शब्दकोशों के साथ, चाबियों की तुलना में जोड़ों पर फिर से शुरू करना लगभग हमेशा बेहतर होता है। ऐसा करने के लिए हमेशा अधिक कुशल कोड होते हैं। डेल्फी शब्दकोश के मामले में, जोड़ी इटेटरेटर हैश की गणना करने की किसी भी आवश्यकता से बचाता है कोड, और जांच प्रदर्शन। –