Diese Compilerswitches bringen nicht wirklich was, weil diese nur auf den eigenen Code Auswirkung hat. Um das ganze
RTTI Zeugs in dene Basis Units zu entfernen, müsste die Delphi Basisklassen (System, Classes, etc) neu ohne
RTTI kompiliert werden. Das geht aber nicht so einfach, wie man meinen könnte. Eigentlch ist das unmöglich, weil man die System untis nicht neu konmpilieren kann.
OP du kannst ja mal folgende Switsches verwenden, wird dir aber wegen obigen Gründen auch nicht wirklich weiterhelfen.
Code:
{$WEAKLINKRTTI ON}
{$
RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Habe ich schon drin siehe Code oben.
Na bringt max 200 KB.
Ich wollte nur sagen das es mich nervt.
Wenn es nicht anders abschaltbar ist dann ist gut.
Aber trotz alle dem es geht auch anders.
Ja hast deine Nachricht nach meiner geschrieben. Übrigens hat die Grösse der EXE praktisch nichts mit den Resourecen zu tun. Das was bei dir in den Resourcen ist, sind Formen (
DFM-Daten die als Resoruce reingelinkt werden) aus der Basisbibliothek von Delphi. Diese machen aber dein Progamm nicht wirklich massiv grösser. Das Problem ist die
RTTI, die bei allen Delphi Basisklassen mit reinkompiliert wurden. Um das zu umgehen. müsstest du alle Delphi DCS's neu durchkompileren und bei allen die
RTTI Flags setzen. Das geht aber leider nut therotisch und in der Praxis ist das praktisch unmöglich. Wollte das selber schon mal machen und habe dann aber relativ schnell aufgegeben.
Eben mal getestet:
Eine minimale Consolenapp, die nur die SysUtils nutzt, ist nun mit aktuellen Delphi's im Release Build um die 150 KB. Bei D7 wird eine leere Consoleapp 41 KB gross. Sobald du da bestimmte Untis verwendest explodiert das und du hast dann >2 MB. In deinem Fall sind die Untis Clipprd, Printers und IOUtils dafür verantwortlich.
Hats du deine exe mit dem Release Build kompiliert oder nur mit Debug?