Der Destructor "Destroy" ist virtuell.
Objekte werden über den Aufruf von "Free" freigegeben.
"Free" ruft intern den Destructor "Destroy" auf.
Deshalb sollten Klassen die einen eigenen Destructor benötigen, immer "Destroy" mit override überschreiben.
Hab noch einen Fehler gefunden:
Delphi-Quellcode:
procedure TTestBruchrechner.BAdditionClick(Sender: TObject);
begin
self.setzeEingabe;
hatBruchrechner.Addition(hatBruch1, hatBruch2);
LZaehlerErgebnis.Caption:=IntToStr(hatErgebnisbruch.gibZaehler);
LNennerErgebnis.Caption:=IntToStr(hatErgebnisbruch.gibNenner);
end;
richtiger z.B. so:
Delphi-Quellcode:
procedure TTestBruchrechner.BAdditionClick(Sender: TObject);
begin
setzeEingabe;
{der alte hatErgebnisbruch wird freigegeben}
hatErgebnisbruch.Free;
{eine neue Instanz von Bruch wird erzeugt und hatErgebnisbruch zugewiesen}
hatErgebnisbruch := hatBruchrechner.Addition(hatBruch1, hatBruch2);
LZaehlerErgebnis.Caption:=IntToStr(hatErgebnisbruch.gibZaehler);
LNennerErgebnis.Caption:=IntToStr(hatErgebnisbruch.gibNenner);
end;