Einzelnen Beitrag anzeigen

Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Klasse sich selbst in eine abgeleitete konvertieren

  Alt 1. Mär 2010, 12:14
Was hältst du von Klassenreferenztypen :
Zitat:
Klassenreferenztypen werden auch als Metaklassen bezeichnet. Die Definition erfolgt folgendermaßen:

class of Typ

Typ ist ein beliebiger Klassentyp. Der Bezeichner Typ gibt einen Wert des Typs class of Typ an. Ist Typ1 ein Vorfahr von Typ
2, dann ist class of Typ2 zuweisungskompatibel zu class of Typ1. Ein Beispiel:

type TClass = class of TObject;

var AnyObj: TClass;

Die Variable AnyObj kann eine beliebige Klassenreferenz aufnehmen (ein Klassenreferenztyp darf nicht direkt in einer Variablendeklaration oder Parameterliste definiert werden). Klassenreferenzvariablen kann auch der Wert nil zugewiesen werden.
Das folgende Beispiel (Konstruktor der Klasse TCollection in der Unit Classes) zeigt, wie Klassenreferenztypen verwendet werden:

type TCollectionItemClass = class of TCollectionItem;

...
constructor Create(ItemClass: TCollectionItemClass);

Diese Deklaration besagt, daß beim Erstellen eines TCollection-Instanzobjekts der Name einer von TCollectionItem abgeleiteten Klasse an den Konstruktor übergeben werden muß.
Klassenreferenztypen sind hilfreich, wenn Sie eine Klassenmethode oder einen virtuellen Konstruktor in einer Klasse oder einem Objekt aufrufen wollen, dessen aktueller Typ zur Compilierzeit nicht bekannt ist.
Glückauf
  Mit Zitat antworten Zitat