2013-11-14 3 views
0

У меня есть функция, которая возвращает объект TADODataSet:Уничтожая 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 

Насколько я знаю, если я создам объект вручную во время выполнения, я должен уничтожить его вручную в какой-то момент, чтобы избежать утечек памяти. Как и когда я должен уничтожить созданный мною набор данных?

ответ

2

Вы можете просто использовать механизм владения Delphi. Вы можете передать владельцу (типа TComponent) в конструкторе, а затем ваш набор данных будет уничтожен всякий раз, когда владелец будет уничтожен. В вашем случае просто передайте форму владельцу.

function TDM.CreateWorkstationsList(Owner: TComponent): TADODataSet; 
begin 
DS := TADODataSet.Create (Owner); 
... 
end; 

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

Вы также можете уничтожить набор данных вручную, например, в случае OnDestroy формы.

+0

Спасибо, это то, что мне нужно. –

Смежные вопросы