Утечка памяти
1) Функция TfqbCore.GenerateSQL имеет локальную переменную SQL: TStringList.
Теперь смотрим код:
2) Неплохо бы убрать пустой экзепшен (когда SQL пустой, орёт по иностранному) типа так:
3) Напоминаю, что надо проверить, убрали ли меморилик:
В файле fqbClass.pas в методе TfqbDialog.Execute происходит безвозвратная утечка памяти. Я копипастил метод и немного изменил, утечка памяти прекратилась. Я думаю надо так:
Теперь смотрим код:
begin
SQL := TStringList.Create; //<--!!
//SELECT
tmpStr := strSel;
if Grid.Items.Count = 0 then Exit; //-->!!
...
Замечательно. Сохранили в локальной переменной созданный объект и свалили.2) Неплохо бы убрать пустой экзепшен (когда SQL пустой, орёт по иностранному) типа так:
procedure TfqbDesigner.TabSheet3Show(Sender: TObject);
var s:string; //+!!
begin
s:=fqbCore.GenerateSQL; //+!!
if s='' then Exit; //+!!
fqbCore.Engine.ResultDataSet.Close;
fqbCore.Engine.SetSQL(s);
fqbCore.Engine.ResultDataSet.Open;
end;
3) Напоминаю, что надо проверить, убрали ли меморилик:
В файле fqbClass.pas в методе TfqbDialog.Execute происходит безвозвратная утечка памяти. Я копипастил метод и немного изменил, утечка памяти прекратилась. Я думаю надо так:
function TfqbDialog.Execute: Boolean;
...
else
Result := false;
fqbCore.Clear; //Без этого кода происходит Unexpected Memory Leak
finally
...
end;
Комментарии
инвестиции в форекс
Сайт о здоровье http://maxi-farm.ru