在原来的程序中每执行一次button1click的代码,内存就泄露几十到上百K,执行几十次就异常退出应用程序了。
为排为其他影响,重建一新工程,只加一个button1,结果虽每点一次button1泄露量减小到十几到几十,问题依然存在。
程序执行的是结果正确。
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('select count(*) as mycount from a where test=1');
Query1.ExecSQL;
Query1.Active:=true;
caption:=Query1.fieldbyname('lbcount').AsString;
Query1.Active:=false;
// Query1.Close;//加上此句和去掉结果没变化
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.DatabaseName:='d:/test';
end;我不知道哪出了问题,请各位帮忙。谢谢!
为排为其他影响,重建一新工程,只加一个button1,结果虽每点一次button1泄露量减小到十几到几十,问题依然存在。
程序执行的是结果正确。
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('select count(*) as mycount from a where test=1');
Query1.ExecSQL;
Query1.Active:=true;
caption:=Query1.fieldbyname('lbcount').AsString;
Query1.Active:=false;
// Query1.Close;//加上此句和去掉结果没变化
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Query1.DatabaseName:='d:/test';
end;我不知道哪出了问题,请各位帮忙。谢谢!
begin
with Query1.Create(Nil) do
begin
Try
DataBaseName := 'D:/Test' ;
Sql.Text := '...' ;
try
Open / ExecSql ;
except
end ;
Finally
Free ;
End ;
end ;
end ;
我试了不行,结果出不来。而且第二次执行时就报错。
应该是查询时生成的临时表占用的内存,如何才能删除掉这个临时表呢。
或者将查询结果每次都放到同一临时表里也可以。