Delphi XE deaktivieren RTTI
-
09-10-2019 - |
Frage
Ich habe in letzter Zeit Delphi XE verwendet, aber die Exe -Größe ist wegen RTTI sehr groß (ich denke)
Howa to RTTI entfernen, und kann ich meine Anwendungsgröße so klein wie Delphi 2009 -Anwendung (490 kb) ohne Komprinsion machen; und wie nutzt RTTI
Lösung
Kurz gesagt (vollständige Geschichte, die durch Links in der Antwort des Splash bereitgestellt wird):
{$ Rtti explizite Methoden ([]) Eigenschaften ([]) Felder ([])}
Beachten Sie, dass Ab XE6 und neuer muss dies in jeder einzelnen Einheit sein, für die Sie RTTI deaktivieren möchten. Zuvor kann es in der DVR -Datei sein und gilt für alle Einheiten im Projekt.
Andere Tipps
Lies das Online -Hilfe für Delphi ...
... und Suche Paketüberfluss:
Denken Sie daran, dass die $RTTI
Die Richtlinie muss in enthalten sein jeder Einheit, wo es wirksam wird. Sehen Wie kann ich die $ rtti -Richtlinie für das gesamte Projekt festlegen?
Ihr Problem hängt nicht mit RTTI zusammen. Wenn Sie über einen relativ geringen Anstieg (100-200K) sprechen, ist dies auf zusätzliche Funktionen in RTL zurückzuführen (hinzugefügt für Unicode-Unterstützung usw.). Wenn Sie oder so 500-700K erhöhen, prüfen Sie, ob Sie VCL-UI-Einheiten (Formulare, Steuerelemente usw.) verknüpfen. Wenn Sie 3 MB erhöhen, haben Sie zusätzliche Debug -Symbole eingeschaltet.
Dies liegt daran, dass SYS -Einheiten einige Generika -Funktionen hinzugefügt wurden. Generika wurden 2009 hinzugefügt, aber in Systemeinheiten wurden einige Klassen mit Generika in XE und XE2 umgeschrieben. meiner bescheidenen Meinung nach
Fügen Sie dieses Flaggen hinzu, um die Größe zu verringern In DPR -Datei (Projekt> Quelle anzeigen) zu jeder einzelnen Einheit (ab XE5)*.
{$SETPEFlAGS IMAGE_FILE_DEBUG_STRIPPED or IMAGE_FILE_LINE_NUMS_STRIPPED or
IMAGE_FILE_LOCAL_SYMS_STRIPPED OR IMAGE_FILE_RELOCS_STRIPPED}
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
(*) Beachten Sie, dass Ab XE5 und neuer muss dies in jeder einzelnen Einheit sein, für die Sie RTTI deaktivieren möchten. Zuvor kann es in der DVR -Datei sein und gilt für alle Einheiten im Projekt.
Ich denke nicht, dass es RTTI ist, was Ihrer Anwendung so viel Größenaufwand verleiht. Woher weißt du, dass es ist?