首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >销毁运行时创建的TADODataset

销毁运行时创建的TADODataset
EN

Stack Overflow用户
提问于 2013-11-14 13:39:57
回答 1查看 646关注 0票数 0

我有一个函数返回一个TADODataset对象:

//在DataModule内部:

代码语言:javascript
复制
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;

这就是我计划如何使用它:

代码语言:javascript
复制
// inside main form: 

tvWorkstation.DataController.DataSource.DataSet := DM.GetWorkstationsList; // tvWorkstation is TcxGridDBTableView

据我所知,如果我在运行时手动创建一个对象,我必须在某个时候手动销毁它,以避免内存泄漏。我应该如何和何时销毁我创建的数据集?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-14 13:59:45

您可以简单地使用Delphi的所有权机制。您可以在构造函数中传递一个所有者(类型为TComponent),然后每当所有者被销毁时,数据集就会被销毁。在您的情况下,只需将表单作为所有者传递即可。

代码语言:javascript
复制
function TDM.CreateWorkstationsList(Owner: TComponent): TADODataSet;
begin
DS := TADODataSet.Create (Owner);
...
end;

DataSource.DataSet := DM.CreateWorkstationsList (Self);

您还可以手动销毁数据集,例如在表单的OnDestroy事件中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19979198

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档