Einzelnen Beitrag anzeigen

Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#6

Re: seltsamer Fehler bei der Arbeit mit Klassen

  Alt 31. Aug 2004, 20:39
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
  Mit Zitat antworten Zitat