type(variable)
= static cast / feste bzw. harte Typkonvertierung
variable as type
= dynamic cast / dynamische bzw. weiche Typkonvertierung
variable is type
= Typprüfung ... arbeitet fast gleich wie AS,
außer dass
AS ein
NIL als leer erfoglreich konvertiert, während
IS dieses als unterschiedlich abweißt.
Beim harten Cast wird direkt beim Kompilieren der Typ geändert. Hier tritt ein Fehler/Warnung nur im Compiler auf, aber zur Laufzeit passiert hier nichts mehr.
Es wird alles nahezu ungeprüft umgeschrieben, egal ob die Typen nicht zusammenpassen.
DU bist für alles Verantwortlich. Manchmal gibt der Compiler nur abschaltbare Warnungen, wenn er "Problemchen" erkennt.
Es gibt nur dann einen Fehler/Compilererabbruch, wenn die Größe des neuen Types größer ist, als der des Ursprungstyps (die Ausnahme stellen hier
ordinale Typen wo der Compiler weiß wie er die neuen Bits auffüllen kann).
Die weichen Casts gibt es nur für Objekte (Klassentypen). Hier wird zur Laufzeit der tatsächliche Inhalt der Variable geprüft, ob es zusammenpasst und endet eventuell in einer
Exception.
Info: Inzwischen funktioniert dieses auch für Interfaces. Dafür gibt es für Delphi-Objekte ein virtuelles Interface, über welches aus einem Interface vorher ein TObjekt rausgeholt und dann gecastet wird.