Hallo,
ich versuch nochmal zu erklären was ich mach. Ich hab beispielsweise folgenden Typ:
Delphi-Quellcode:
TFaktorTyp = class
GesamtWert: Real;
end;
// mögliche Faktortypen
TFTTerm = class(TFaktorTyp)
Wert: PTerm;
end;
TFTVariable = class(TFaktortyp)
Wert: Integer; // id
end;
TFTZahl = class(TFaktorTyp)
Wert: Real;
end;
Mein Faktor kann also von einem der 3 Typen sein. Wenn ich dich richtig verstanden hab, soll also folgendes nicht funktionieren?:
Delphi-Quellcode:
procedure bla(typ: Integer; var Faktor: TFaktorTyp);
begin
case typ of
1: Faktor := TFTTerm.Create;
2: Faktor := TFTVariable.Create;
3: Faktor := TFTZahl.Create;
end
end;
Es treten dabei jedoch keine Fehler auf und ich kann sowohl auf Gesamtwert als auch auf Wert zugreifen. Will ich Wert auslesen / verändern muss ich dementsprechend dann natürlich auch TFTTerm(Faktor) / TFTVariable(Faktor) oder TFTZahl(Faktor) schreiben. Ich dachte eigentlich, dass das so funktioniert. Aber ich lass mich gern eines Besseren belehren
.
Ich find den Weg über die Mutter- / Tochterklassen ehrlich gesagt auch nicht so toll, aber einen besseren hab ich noch nicht gefunden. Wenn du mir ne bessere (nicht so speicherintensive) Möglichkeit sagen kannst dann poste sie bitte.
Den Thread hab ich ja eigentlich gar nicht gestartet weil ich ein Problem hab, sondern weil mich gewundert hat, dass beim Createn der falschen Klassen trotzdem Zuweisungen (teilweise) funktionieren. Aber Chewie hat ja geschrieben warum das manchmal geht und dass es dann Zufall ist.
mfg Niels