TADOQuery = class(TCustomADODataSet)
...
constructor TCustomADODataSet.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FCommand := TADOCommand.Create(Self);
...
destructor TADOQuery.Destroy;
begin
// Problem: destroy before delete of members
inherited Destroy;
FreeAndNil(FSQL);
end;
destructor TADOCommand.Destroy;
begin
// The same problem: destroy before delete of members
inherited Destroy;
Connection := nil;
FCommandObject := nil;
FreeAndNil(FParameters);
end;
See this discussion:
groups.google.ru/groups&lr=&threadm=41ed54ce%241%40newsgroups.borland.com&rnum=6&prev=/groups%3Fas_q%3DTADOCommand%26as_ugroup%3D*borland*%26as_scoring%3Dd%26lr%3D%26num%3D20%26hl%3Dru
Possible workarounds:
- don't create TADOQuery and TADOCommand dynamically (use some static
instances), "ignore small leak" on terminating of application;
- patch adodb.pas ...