Forum: Programmieren allgemein
Delphi
by himitsu,
5. Feb 2014
Auf den Namen solltest du besser nicht prüfen, sondern besser auf den Klassentyp. (Namen sind nicht eindeutig)
Aber damit prüfst du nur, ob die Methode in dieser Klasse implementiert wurde, was aber auch auf die abstrakte Methode zutreffen würde, wenn sie direkt in dieser Klasse drin steht.
Forum: Programmieren allgemein
Delphi
by himitsu,
3. Feb 2014
Grundsätzlich meckert der Compilier, wenn man eine Instanz 'ner Klasse erstellen will, wo noch abstrakte Methoden drin sind.
Demnach könnte man sagen, daß es garnicht nötig ist, das zu prüfen.
Aber schau mal bei TStream in den Quellcode.
Dort gibt es zwei Varianten für Seek (einmal 32 und nochmal für 64 Bit).
Dort drin wird geschaut, ob die andere Variante überladen wurde, falls sie...
Forum: Programmieren allgemein
Delphi
by himitsu,
30. Jan 2014
Es wird nur über den Owner (Besitzer) freigegeben ... der Parent ist nur für die Darstellung.
Application.CreateForm setzt aber überall den Owner auf die Application, also löscht Application das dann, wenn die Anwendung beendet wird.
Forum: Programmieren allgemein
Delphi
by himitsu,
30. Jan 2014
Es kann nur einen geben.
Es darf immer nur eine Klasse, mit dem selben Namen, zur gleichen Zeit registriert sein.
Nochmal was Gleichnamiges registrieren knallt demnach.
Forum: Programmieren allgemein
Delphi
by himitsu,
30. Jan 2014
TFormClass selber mußt du nicht unbedingt kennen.
type
TFormClass = class of TForm;
Das ist ein Typ, in den keine Instantzen des Typs reinkommen (wie bei TForm, wo TForm.Create und Nachkommen rein kommt),
sondern wo Typen reinkommen, welche z.B. davon abgeleitet sind.
Das Wichtigste dabei ist nur, daß die gewünschte Methode (wie z.B. Create) im Basistyp virtual oder dynamic sein muß.
Forum: Programmieren allgemein
Delphi
by himitsu,
30. Jan 2014
var
F : Array of TFormClass;
begin
F := TForm42;
F := TForm43;
F.Create(Self).Show;
end;
So?
Nja, und wie du schon erkannt hasst: