In einer Newsgroup (
http://groups.google.ru/group/borlan...796b7e06282e87 ) bin ich auf das folgende Problem gestoßen:
Interessant dabei ist, dass das, was hier hier, als Bugfix für Delphi7 herausgegeben wurde. Komischerweise stand es in meiner AdoDB von BDS2006 wieder genauso drinnen (also erst inherited Destroy, dann die anderen Befehle).
Delphi-Quellcode:
destructor TADOCommand.Destroy;
begin
// we modified like this ==>
Connection := nil;
FCommandObject := nil;
FreeAndNil(FParameters);
// we modified : end
inherited Destroy;
{ // this is the original source code
Connection := nil;
FCommandObject := nil;
FreeAndNil(FParameters);}
end;
destructor TADOQuery.Destroy;
begin
// we modified like this ==>
FreeAndNil(FSQL);
// we modified : end
inherited Destroy;
// FreeAndNil(FSQL); // original source code
end;
Der Effekt lässt sich übrigens auch mit einer TAdoTable nachstellen:
Delphi-Quellcode:
LogToFile('TThumblist.Reload.Start');
if assigned(Database) then begin
try
at := TADOTable.Create(NIL);
at.Connection := Database;
at.TableName := 'T_Storage_Thumbs';
at.CursorType := ctOpenForwardOnly;
LogToFile('TThumblist.Reload.at.Open');
at.Open;
LogToFile('TThumblist.Reload.at.First');
at.First;
LogToFile('TThumblist.Reload.at.Close');
at.Close;
finally
FreeAndNil(at);
end;
end;
LogToFile('TThumblist.Reload.Ende');
Zitat:
10:49: TThumblist.Reload.Start [
Ram: 488.891]
10:49: TThumblist.Reload.at.Open [
Ram: 488.891]
10:49: TThumblist.Reload.at.First [
Ram: 461.158]
10:49: TThumblist.Reload.at.Close [
Ram: 461.158]
10:49: TThumblist.Reload.Ende [
Ram: 475.536] // <-- hier fehlen auch 13 MB
Ram