Ich hab ein etwas sonderbares Problem, bin mir aber sicher, dass es irgendwie zu realisieren geht. Nur fehlt mir hier etwas Wissen.
Ich beschreibe das Problem etwas vereinfacht: ich erstelle ein Objekt in einer Prozedur und gebe das Objekt in einer zweiten Prozedur frei. Soweit nichts besonderes, das Problem liegt aber im Detail.
Ich beschreibe das Problem etwas genauer: ich erstelle in einer Prozedur ein beliebiges Objekt und übergebe es an ein TStrings Item. Beim löschen des Items in der zweiten Prozedur gebe ich zuerst das Objekt frei und lösche dann erst das Item. Das ist die normale Vorgehensweise, also immer noch nichts besonderes.
Das Problem ist aber, dass das Objekt in der ersten Prozedur mal dieses, mal jenes sein kann. Ich muß also in der zweiten Prozedur den Typ immer anpassen. Das möchte ich mir sparen. Ich würde das gerne automatisieren wenn es geht. Nur bisherige Versuche schlugen fehl.
Ich kann doch den Objekttyp aus dem Item auslesen. Wie kann ich also zu Laufzeit den Objekttyp einer Variable ändern?
Letztendlich geht es um sowas in der Art:
Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
var
i: Integer;
Tmp: TMyObj;
begin
with ListBox1 do
for i := 0 to Items.Count - 1 do
begin
Tmp:= TMyObj(Items.Objects[i]);
Tmp.Free;
end;
end;
Kann ich Tmp als Objekttyp zu Laufzeit anpassen?