I think it is not the first time this topic was opened, but still think we need when using object to have automatically destructor called by compiler when the object freed
TmyObject = object
FSQL: TStringList;
constructor Init(SQL: string);
destructor Free;
end;
constructor TmyObject.Init(SQL: string);
begin
FSQL:=TStringList.Create;
end;
destructor TmyObject.Free;
begin
FSQL.Free;
end;Here in the example we can call init manually and it is not a problem, because it is always we know who is create this object. But free or destroy can not call it manually, we not know who will kill that object first, because many of another object assigned to it.
Ref
http://lists.freepascal.org/lists/fpc-pascal/2006-August/011626.html
I know about Interfaces but i hate use it,
All just we need new feature to call "destroy" when freeing the object.
Best Regards
Zaher Dirkey
