Im allgemeinen wernden Objekte mit .Free freigegeben.
Eine Außnahme gibt es allerdings noch bei Forms. Hier sollte man Form.Release verwenden, damit mögliche Events noch vollständig abgearbeitet werden können, bevor das Form dann freigegeben wird.
Die Definition einer Klasse würde ich immer in eine
Unit packen, wenn das nicht passt, sollte man sich überlegen ob man die Objekte nicht besser modellieren kann:
Beispiel:
Delphi-Quellcode:
Unit uHaus;
interface;
uses
..
type
THaus =
class(Tcomponent)
public
Constructor Create(AOwner..);
Destructor Destroy;
override;
end;
implementation
Constructor THaus.Create(AOwner..);
begin
inherited Create(AOwner);
...
end;
Destructor Destroy;
begin
...
inherited Destroy;
end;
----
Delphi-Quellcode:
unit uTest
interface;
uses
uHaus;
procedure Test;
var
haus:THaus;
begin
haus := THaus.Create(
nil);
// eine Instanz von Haus erzeugen
haus.ToWas;
// Instanz benutzen
haus.Free;
// Instanz wieder freigeben
end;
Du musst zwischen der Definition einer Klasse (hier in uHaus) und der Instanz (hier i uTest) einer Klasse unterscheiden. Nur die Instanz existiert wirklich, und nur mit der kannst du arbeiten. Die Definition ist eine Art Schablonbe, die beschreibt, was du abbilden möchtest.