Ich weis das es nicht kleiner geht aber es will mir nicht in den Kopf warum.
warum muss die EXE nun 3,5 MB groß sein.
Die
RTTI sorgt u.a. dafür, dass du Funktionen, Objekteigenschaften usw. über den Namen ansprechen kannst. Damit kannst du auch solche verwenden, die im Code nie verwendet werden. Entfernt der Compiler diese Funktionen dann trotzdem, knallt es sobald jemand diese per
RTTI verwenden möchte.
Umgekehrt verwenden Delphis Units intern selbst die
RTTI, so dass sich diese auch nicht einfach so abschalten lässt, denn dann würde da wiederum manches nicht mehr funktionieren.
Du verwendest ein paar Funktionen, die dazu führen, dass viele bzw. große Units einkompiliert werden.
Original sind es bei mir 2516 KiB als Release (ohne deine Ressource und die INI-
Unit).
Entfernst du einfach nur die
VCL-Units
Vcl.Clipbrd (Clipboard.AsText) und
Vcl.Printers (AssignPrn, Printer.Canvas), halbiert sich die Größe schon auf 1206 KiB.
Entfernst du dann noch die
Unit System.IOUtils (die in der
Unit gar nicht verwendet wird) landest du schon bei nur noch 255 KiB.
Die
Unit System.SysUtils würde nun noch knapp 100 KiB sparen, ist aber nicht so einfach zu ersetzen.
Unter PowerBasic habe ich überhaupt keine Ressource inkludiert.
Und die
DLL tut ihr Ding!
PowerBasic kann z.B. Funktionen nicht über den Namen ansprechen, weil es so etwas wie die
RTTI dort nicht gibt. Deshalb werden dafür eben auch keine Informationen einkompiliert. Und auch die vorhandenen Bibliotheksfunktionen können ja deutlich weniger als bei Delphi.