Hallo!
Ich hab ein Problem beim zerstören von Instanzen beim Beenden des Programms!
Und zwar habe ich eine Reihe von Instanzen einer Klasse x. In dieser Klasse x befindet sich eine Variable, die auf eine Instanz der Klasse y zeigt.
Am Ende des Programms durchlaufe ich alle Instanzen der Klasse x und schaue mittels assigned, bevor ich sie zerstöre, ob in der Variable noch eine Instanz der Klasse y besteht.
Bringt mir das true, wird auch die Instanz von y zerstört.
Doch jetzt zum Problem: Wenn ich zur Laufzeit bereits durch eine andere Methode die Instanz von y zerstört habe, liefert mir assigned trotzdem true und wenn ich dann die Instanz zerstören will, kommt es zur
Exception: der Klasse EConvertError Format '%p' ungültig oder nicht kompatibel mit Argument.
Woran könnte das liegen?
Das wird durchlaufen:
Delphi-Quellcode:
for i := length(zimmerObj)-1 downto 0 do
begin
if assigned(zimmerObj[i].buchung) then
begin
if assigned(zimmerObj[i].buchung.kunde) then
begin
zimmerObj[i].buchung.kunde.Free;
end;
zimmerObj[i].buchung.Free; //Hier nach kommt der Fehler
end;
zimmerObj[i].Free;
end;
Damit zerstöre ich es während der Laufzeit in einem anderen Formular:
Delphi-Quellcode:
myZimmer.buchung.kunde.Free;
myZimmer.buchung.Free;