Zitat:
Da würdest schon zur Compiletime merken, wenn TRectangle nicht von TFigure abgeleitet ist.
Nein würdest du nicht merken

Denn das Ziel war es die Methode .Show; aufzurufen von einer Klasse die garkeine solche Methode implementiert. Und das sollte UNMÖGLICH sein, tja wenn da nicht der harte TypCast wäre der die Typsicherheit des Compilers ausschaltet. Das Ziel war es eben NICHT dynamisch zur Laufzeit auf nicht vorhersagebare Umweltbedingungen, sprich dynamisch allozierte Klassenobjekte zu reagieren. In dem besagtem Beispiel war schon im Source die zu verwendende Klasse fixiert, ergo ist der "as" Operator das probatest Mittel um "falsche" Typcast durch "schusselige" Programmierungen zu verhindern.
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.
Gruß Hagen