Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
2. Sep 2007
Noch ein Versuch: Was bedeutet VMTCreateObject?
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
1. Sep 2007
Ich würde schon gerne die Bedeutung von VMTCreateObject wissen. Deshalb hole ich diesen Thread mal wieder hoch.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
30. Aug 2007
Ich glaube, dass bedeutet, dass wir die ganze Zeit aneinander vorbeigeredet haben: Ich meinte, dass TBaseclass.create mit der Klassenreferenz TSecondclass aufgerufen wird, und du sagtest, dass TBaseclass.create aufgerufen wird. Das widerspricht sich wohl nicht.
Ich dachte, dass du in deinen Konstruktor ebenfalls den Classname (deshalb meine Ergänzung mit hartcodierten Namen) anzeigen ließest.
...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
30. Aug 2007
Hagen, Hagen... mir musst du das mit Polymorphie, dynamisch, virtuell und und und nicht erklären...
Und ich habe es eben nochmal ausprobiert: man kriegt TSecondClass raus.
Ein Aufruf von TBaseclass.create kriegt als allerersten Parameter die Klassenreferenz mit, die in diesem Fall TSecondclass ist, und den Konstruktor haben wir beauftragt, Klassenreferenz.ClassName anzuzeigen.
WARUM IN ALLER...
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
29. Aug 2007
Schau mal in die Delphi-Hilfe. Code sagt mehr als tausend Worte:
type TMetaclass=class of TMyClass; //Deklaration des Metaklassentyps
var metaklasse: TMetaclass;
begin
metaklasse:=TMyclass;
metaklasse:=TMyDerivedClass;
metaklasse:=TObject; //geht nicht, da nicht von TMyClass abgeleitet
metaklasse.statischeMethode;
end.
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
29. Aug 2007
Ja, aber hier reden wir über Konstruktoren, und da ist ein virtual vollkommen sinnlos, wenn man keine Metaklassen verwendet (oder sie an einer Instanz aufruft, s. o.).
Forum: Object-Pascal / Delphi-Language
Delphi
by Apollonius,
29. Aug 2007
Meiner Meinung nach brauchst du virtual bei Konstruktoren und Klassenmethoden nur, wenn du mit Klassenreferenztypen (Metaklassen) arbeitest, oder den Konstruktor an einer Instanz aufrufst (Instanz.create;), was ich bisher noch nie gemacht habe.