Zu unsinnigen/gefährlichen Hardcasts allerdings sagt der Compiler nix, kann und soll er auch nicht.
Warum sollte er nicht?
Hardcasts sind nunmal hardcasts - wenn man die verwendet, dann sollte man schon wissen, was man macht. Dass nun Anfänger ggf Fehler machen und es ihnen die Sprache erlaubt ist dann nunmal so. Dafür gibts Lehrmaterial.
800 kB: FinalBuilder mit XE kompiliert, wo Eurekalogs ECC an den Parametern rumgepfuscht
3-4 MB im DelphiXE kompiliert (DLLs und Packages muß ich vorher einmal dort kompilieren, um sie "komplett" debuggen zu können und dabei auch Parameter und Variablen sehen zu können
10 MB im 10.4 kompiliert (auch inkl. Debuginfos)
... für über 80
BPL/
DLL/EXE ergibt das schon ganz schön
Mehrwert
Fun fact: der meiste Zuwachs gerade in den letzten Jahren kommt eben genau dadurch: dass auch die
RTL/
VCL/FMX/Drittanbieter mit Generics durchsetzt sind und somit aufgeblasen werden.
Mach mal ne Button/Edit/ListBox-Anwendung in FireMonkey und schau wieviel des Binärcodes nur von TList kommt.
Spoiler: In der ca 9MB großen Exe, die ich hier mit nem 10.4 herausbekomme, sind über 2.5MB nur Binärcode und
RTTI aus diversen TList<T> etc.
Und dazu kommen dann noch so dämliche Benutzungen von Generics wie in
TStyledControl.FindStyleResource<T: TFmxObject>
- gerade FMX ist durchsetzt von dümmlicher Benutzung von Generics -
TStyledPresentationProxy<T: TStyledPresentation, constructor>
ist auch so ein Beispiel und es gibt zahlreiche davon.