Type of sollte nicht benutzt werden. Das verhält sich wie class of und war wohl für den .NET Compiler von Delphi 2006 gedacht. Sprich eine Referenz auf den Typ. Das funktioniert aber nicht korrekt.
Alles weitere kannst du hier und in den dort angegebenen Links nachlesen:
quality.embarcadero.com/browse/RSP-9850
Wenn du einfach schreibst
TypA = TypB, ist TypA ein Alias für TypB. Wenn du schreibst
TypA = type TypB, wird ein neuer Typ angelegt, so dass zwar die gleiche Funktionalität wie TypA verwendet wird, aber der Typ immer als TypB erkennbar ist. Du kannst also zur Laufzeit aus einer Variable erkennen, dass sie TypB ist. Ohne das type würde sie als TypA identifiziert werden.
Bei Delphi 10 kommt bei der Zuweisung von #$30A0 auch die korrekte Fehlermeldung:
Zitat: |
E1012 Konstantenausdruck verletzt untere Grenzen
|
Und bei k2 kommt kein Fehler, aber "type of" sollte ja auch nicht verwendet werden.