Domanda newbie: Ho una domanda di moduli. Ha un thread separato che effettua una chiamata ai servizi Web e quindi invia i risultati della chiamata al modulo principale.Devo liberare un oggetto Delphi auto-istanziato da una chiamata di servizi Web?
Nel mio thread, dopo X secondi sono passati (utilizzando un TTimer), mi chiama:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage(ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues));
end;
I Remote.Run.GetSystemProbeValues funzione ha il seguente prototipo:
function GetSystemProbeValues : TCWProbeValues; stdcall;
E TCWProbeValues è una matrice dinamica di oggetti TCWProbeValue (che discendono tutti da TRemotable).
Nella mia forma principale, viene visualizzato il messaggio proprio bene e gettato il lParam torna a TCWProbeValues:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
La mia domanda è, dato che la matrice dinamica ei suoi oggetti sono stati creati dal sistema Delphi HTTORIO, chi è responsabile della loro liberazione? Delphi considerava la memoria riutilizzabile dopo il ritorno della mia funzione OnTimer? (E in tal caso, è pura fortuna che il mio gestore di messaggi principale possa effettivamente leggere la memoria a cui fa riferimento il LParam del messaggio?) O piuttosto, è mia responsabilità liberare l'oggetto auto-istanziato dalla richiesta HTTPRIO?
Mille grazie, per favore grida se quanto sopra ha bisogno di più dettagli/codice e lo aggiungerò ad esso!
Cheers, Duncan