System.Variants.TInvokeableVariantType

Delphi
TInvokeableVariantType = class(TCustomVariantType, IVarInvokeable)
C++
class PASCALIMPLEMENTATION TInvokeableVariantType : public TCustomVariantType
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
class | public | System.Variants.pas System.Variants.hpp |
System.Variants | System.Variants |
Beschreibung
TInvokeableVariantType ist die Basisklasse für Typen, die benutzerdefinierte Variant-Objekte mit Eigenschaften und Methoden implementieren.
Mit TInvokeableVariantType können Sie neue Datentypen für Delphi-Varianten mit Eigenschaften und Methoden definieren. Die von TInvokeableVariantType abgeleiteten Objekte entsprechen nicht den Varianten selbst. Sie dienen als Hilfsklassen, die von benutzerdefinierten Varianten zum Durchführen von Operationen verwendet werden.
Anmerkung: Definieren Sie keine von TInvokeableVariantType abgeleitete Klassen in C++. Die Logik für benutzerdefinierte Variant-Ttypen muss im Delphi-Quelltext definiert werden.
So erstellen Sie einen Variant-Typ, der Eigenschaften und Methoden unterstützt:
- Ordnen Sie den Speicherplatz für die Daten eines Variant-Objekts einem TVarData-Record zu.
- Schreiben Sie eine Methode, die Instanzen des benutzerdefinierten Variant-Typs erstellt. In dieser Methode werden dem Record die Daten des Variant-Objekts zugewiesen (siehe Schritt 1).
- Deklarieren Sie eine von TInvokeableVariantType abgeleitete Klasse.
- Implementieren Sie in der neuen Klasse die gewünschten Funktionen (einschließlich der Regeln zur Typumwandlung). Hierzu müssen die betreffenden virtuellen Methoden (in der Regel DoFunction, DoProcedure, GetProperty, SetProperty, BinaryOp, UnaryOp, CompareOp oder Compare, Cast, CastTo, Clear, Copy, IsClear, LeftPromotion und RightPromotion) überschrieben werden.
- Erstellen Sie im initialization-Abschnitt der Unit, in der Ihr TInvokeableVariantType-Nachkomme deklariert ist, eine Instanz der Kasse. Beim Instantiieren des Objekts wird es automatisch für das Variant-Verarbeitungssystem registriert, damit der neue Variant-Typ genutzt werden kann.
- Geben Sie im finalization-Abschnitt der Unit, in der Ihr TInvokeableVariantType-Nachkomme deklariert ist, die Instanz der Kasse frei. Dadurch wird die Registrierung des Variant-Typs automatisch aufgehoben.
Beachten Sie beispielsweise die Unit VarConv, die einen benutzerdefinierten Variant-Typ für Maßangaben implementiert.
Tip: Wenn der benutzerdefinierte Variant-Typ eine Objektinstanz zum Speichern der Daten verwendet, können Sie die als published deklarierten Eigenschaften dieses Objekts automatisch implementieren, indem Sie Ihren benutzerdefinierten Variant-Typ stattdessen von TPublishableVariantType ableiten.