我有一个函数返回一个TADODataset对象:
//在DataModule内部:
function TDM.GetWorkstationsList: TADODataset;
var
DS: TADODataSet;
begin
DS := TADODataSet.Create(nil);
DS.Connection := MyConnection; // MyConnection is TADOConnection
DS.CommandType := cmdText;
DS.CommandText := 'SELECT * FROM Workstation';
DS.Active := True;
Result := DS;
end;这就是我计划如何使用它:
// inside main form:
tvWorkstation.DataController.DataSource.DataSet := DM.GetWorkstationsList; // tvWorkstation is TcxGridDBTableView据我所知,如果我在运行时手动创建一个对象,我必须在某个时候手动销毁它,以避免内存泄漏。我应该如何和何时销毁我创建的数据集?
发布于 2013-11-14 13:59:45
您可以简单地使用Delphi的所有权机制。您可以在构造函数中传递一个所有者(类型为TComponent),然后每当所有者被销毁时,数据集就会被销毁。在您的情况下,只需将表单作为所有者传递即可。
function TDM.CreateWorkstationsList(Owner: TComponent): TADODataSet;
begin
DS := TADODataSet.Create (Owner);
...
end;
DataSource.DataSet := DM.CreateWorkstationsList (Self);您还可以手动销毁数据集,例如在表单的OnDestroy事件中。
https://stackoverflow.com/questions/19979198
复制相似问题