Zu Variants - meistens wird das in Verbindung mit
Ole Objekten verwendet; ich wusste z.B. nicht, dass Variants wie Klasseninstanzen behandelt und beliebige (
Ole) Methoden darüber aufgerufen werden können.
Das ist nur bedingt richtig. Ein Variant kann verschiedene Datentypen enthalten. Integer, Double, Boolean usw. aber unter anderem auch Objekte und Interfaces. Wenn ein
OLE-Interface (genauer ein IDispatch) in einem Variant gespeichert ist, dann kann ich auf die Interface-Methoden einfach durch die Punkt-Notation zugreifen. Allerdings wird dabei erst zur Laufzeit geprüft, ob die entsprechende Methode auch tatsächlich existiert.
Der folgende Code wird also vom Compiler durchgelassen, führt aber zu einem Laufzeitfehler:
Delphi-Quellcode:
var
V: Variant;
begin
V := 1;
V.Hurz;
end;