Pregunta de novato: Tengo una aplicación de formularios. Tiene un hilo separado que hace una llamada de servicios web, y luego publica los resultados de la llamada al formulario principal.¿Debo liberar un objeto Delphi automáticamente de una llamada a servicios web?
En mi hilo, después de X segundos han pasado (utilizando un TTimer), que llame a:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage(ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues));
end;
Los Remote.Run.GetSystemProbeValues función tiene el siguiente prototipo:
function GetSystemProbeValues : TCWProbeValues; stdcall;
Y TCWProbeValues es una matriz dinámica de objetos TCWProbeValue (que todos descienden de TRemotable).
En mi forma principal, recibo el mensaje de bien y tire la LParam de nuevo a TCWProbeValues:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
Mi pregunta es, dado que la matriz dinámica y sus objetos fueron creados por el sistema Delphi HTTORIO, ¿Quién es responsable de liberarlos? ¿Delphi consideró que la memoria se podía reutilizar después de que se devolviera la función OnTimer? (¿Y en ese caso, es pura suerte que mi manejador principal de mensajes de formulario realmente pueda leer la memoria a la que hace referencia el LParam del mensaje?) O más bien, ¿es mi responsabilidad liberar el objeto autoinstanciado por la solicitud HTTPRIO?
Muchas gracias, por favor griten si lo anterior necesita más detalles/código y ¡lo agregaré!
Cheers, Duncan