
Zitat von
negaH:
Der "is" Operator im Zusammenhang mit der IF THEN Abfrage ist keine Typüberprüfung die zur Compiletime durch den Compiler durchgeführt wird. Die "is" und "as" Operatoren sind ausschließlich Laufzeitüberprüfungen.
:grübel:
Laut Hilfe in Delphi...

Zitat von
Delphi Hilfe:
Der Operator is führt eine dynamische Typprüfung durch. Mit ihm können Sie den aktuellen Laufzeittyp eines Objekts ermitteln. Der Ausdruck
Objekt is Klasse
gibt True zurück, wenn Objekt eine Instanz der angegebenen Klasse oder eines ihrer Nachkommen ist. Trifft dies nicht zu, wird False zurückgegeben (hat Objekt den Wert nil, ist der Rückgabewert ebenfalls False). Wenn der deklarierte Typ von Objekt nicht in Beziehung zu Klasse steht (wenn die Typen also unterschiedlich und nicht voneinander abgeleitet sind), gibt der Compiler eine Fehlermeldung aus. Ein Beispiel:
if ActiveControl is TEdit then TEdit(ActiveControl).SelectAll;
Diese Anweisung prüft zuerst, ob die Variable eine Instanz von TEdit oder einem ihrer Nachkommen ist, und führt anschließend eine Typumwandlung in TEdit durch.
Dann scheint die Fehlerhaft zu sein, denn wenn der Compiler es merkt, dann ist das zur Compilezeit, zur Laufzeit selber hat der Compiler nichts mehr am Programm zu tun.