初心者の質問:フォームアプリケーションがあります。Webサービス呼び出しを行い、呼び出しの結果をメインフォームに投稿する別のスレッドがあります。
私のスレッドでは、(TTimerを使用して)X秒が経過した後、次のように呼び出します。
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は、TCWProbeValueオブジェクトの動的配列です(これらはすべてTRemotableから派生しています)。
私のメインフォームでは、メッセージを問題なく受信し、LParamをTCWProbeValuesにキャストし直します。
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
私の質問は、動的配列とそのオブジェクトがDelphi HTTORIOシステムによって作成されたとすると、それらを解放する責任があるのでしょうか。Delphiは、OnTimer関数が戻った後、メモリが再利用可能であると見なしましたか?(そして、その場合、私のメインフォームメッセージハンドラーが実際にメッセージのLParamによって参照されるメモリを読み取ることができるという純粋な幸運ですか?)むしろ、HTTPRIO要求によって自動インスタンス化されたオブジェクトを解放するのは私の責任ですか?
上記に詳細/コードが必要な場合は、大声で叫んでください。追加します。
乾杯、ダンカン