Câu hỏi của người mới: Tôi có đơn đăng ký biểu mẫu. Nó có một chuỗi riêng biệt mà làm cho một cuộc gọi dịch vụ web, và sau đó gửi kết quả của cuộc gọi đến biểu mẫu chính.Tôi có nên giải phóng một đối tượng Delphi được tự động khởi tạo từ một cuộc gọi dịch vụ web không?
Trong chủ đề của tôi, sau X giây đã trôi qua (sử dụng một TTimer), tôi gọi:
procedure TPollingThread.OnTimer(Sender: TObject);
var
SystemProbeValues : TCWProbeValues;
begin
SystemProbeValues := Remote.Run.GetSystemProbeValues;
PostMessage(ParentHandle, WM_APIEVENT ,Integer(apiMultiCellStatus), Integer(SystemProbeValues));
end;
Các Remote.Run.GetSystemProbeValues chức năng đã nguyên mẫu sau:
function GetSystemProbeValues : TCWProbeValues; stdcall;
Và TCWProbeValues là một mảng động của các đối tượng TCWProbeValue (tất cả đều xuất phát từ TRemotable).
Ở dạng chính của tôi, tôi nhận được thông báo tốt và đúc các lParam trở lại TCWProbeValues:
procedure TFrmCWMain.OnAPIEvent(var msg: TMessage);
begin
ProbeValues := TCWProbeValues(msg.LParam);
end;
Câu hỏi của tôi là, cho rằng mảng động và các đối tượng của nó được tạo ra bởi hệ thống Delphi HTTORIO, ai chịu trách nhiệm giải phóng chúng? Delphi có nghĩ rằng bộ nhớ có thể sử dụng lại sau khi chức năng OnTimer của tôi quay trở lại không? (Và trong trường hợp nào, may mắn thuần khiết của nó là trình xử lý tin nhắn biểu mẫu chính của tôi thực sự có thể đọc bộ nhớ được tham chiếu bởi LParam của thông báo?) Hay đúng hơn, đó là trách nhiệm của tôi để giải phóng đối tượng được tự động khởi tạo bởi yêu cầu HTTPRIO?
Rất cám ơn, hãy hét lên nếu điều trên cần thêm chi tiết/mã và tôi sẽ thêm vào đó!
Chúc mừng, Duncan