न्यूबी प्रश्न: मेरे पास एक फॉर्म एप्लीकेशन है। इसमें एक अलग धागा है जो एक वेब सेवा कॉल करता है, और उसके बाद कॉल के परिणामों को मुख्य रूप में पोस्ट करता है।क्या मुझे एक वेब सेवा कॉल से स्वचालित रूप से डेल्फी ऑब्जेक्ट को मुक्त करना चाहिए?
मेरी धागा में, के बाद एक्स सेकंड (एक TTimer का प्रयोग करके) बीत चुके हैं, मैं फोन:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage(ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues));
end;
समारोह Remote.Run.GetSystemProbeValues निम्नलिखित प्रोटोटाइप है:
function GetSystemProbeValues : TCWProbeValues; stdcall;
और TCWProbeValues टीसीडब्लूप्रोब वैल्यू ऑब्जेक्ट्स की गतिशील सरणी है (जो सभी ट्रायमटेबल से निकलती हैं)।
मेरी मुख्य रूप में, मैं ठीक संदेश प्राप्त होता है और lParam वापस TCWProbeValues लिए डाली:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
मेरा प्रश्न, दिया जाता है कि गतिशील सरणी और अपनी वस्तुओं डेल्फी HTTORIO प्रणाली द्वारा बनाया गया था, उन्हें मुक्त करने के लिए कौन जिम्मेदार है? क्या डेल्फी इस बात पर विचार करता है कि मेरे ऑनटीमर फ़ंक्शन के बाद मेमोरी फिर से प्रयोग योग्य हो गई? (और इस मामले में, मेरी शुद्ध शुभकामनाएं कि मेरा मुख्य रूप संदेश हैंडलर वास्तव में संदेश के एलपीराम द्वारा संदर्भित स्मृति को पढ़ सकता है?) या फिर, क्या यह मेरी ज़िम्मेदारी है कि ऑब्जेक्ट को HTTPRIO अनुरोध द्वारा ऑटो-इंस्टीट्यूट किया गया हो?
बहुत धन्यवाद, अगर उपरोक्त को अधिक विस्तार/कोड की आवश्यकता है तो कृपया चिल्लाओ और मैं इसमें जोड़ दूंगा!
चीयर्स, डंकन