![]() |
RTTI abschalten oder minimieren - HowTo ?
Hallo,
kann man die RTTI's in der DCE 12 abschalten oder zumindest minimieren ? |
AW: RTTI abschalten oder minimieren - HowTo ?
Hallo,
Delphi-Quellcode:
Das steht so in der Hilfe.Vielleicht ist es das, was du suchst?
{$IF CompilerVersion >= 21.0}
{$WEAKLINKRTTI ON} {$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])} {$IFEND} |
AW: RTTI abschalten oder minimieren - HowTo ?
Ich bin mir nicht sicher, ob es das ist, was du suchst:
Projektoptionen -> Erzeugen -> Delphi-Compiler -> Compilieren -> Quelltexterezugung -> Laufzeittypinformationen ausgeben |
AW: RTTI abschalten oder minimieren - HowTo ?
moin moin,
irgendwie muss DCE 12 mitbekommen, wenn man unter einer anderen PID das erstellte Programm/Anwendung/Bibliothek betrachtet. kann sicherlich sein, dass das sowas wie ein Kopierschütz ist... ? habe das jetzt schon öfters erlebt. kann jemand was dazu sagen ? |
AW: RTTI abschalten oder minimieren - HowTo ?
Erstmal, die Regeln hier haben sich noch nicht geändert. Eine Frage pro Thread bitte.
Zitat:
Zitat:
Wenn da was abschmiert haste Mist programmiert. Soll ja selbst den Besten immer malwieder passieren. |
AW: RTTI abschalten oder minimieren - HowTo ?
Hallo Sinspin,
die Fragen gehen in Richtung: Leistungssteigerung. Also auch, das die IDE von DCE 12 regelmäßig abstürzt. Und ich bin halt auf der Suche, warum das denn so sein kann. Das dann Cross-Postings aufkommen, ist nicht gewollt. Ist nur halt komisch... |
AW: RTTI abschalten oder minimieren - HowTo ?
okay.
Ich habe mal ein wenig mit den Projekt-Optionen gespielt, und bin dann auf "Linken mit Laufzeitpackages" gestoßen. Dabei viel mir auf, das die Option für den DCE 12 Linker auf FALSE eingestellt war, und ich somit angenommen habe, das da keine Laufzeitpackages mit in die EXE einfließen würden. Wenn ich das Option-Kästchen auf TRUE setze, dann wird die EXE um einiges kleiner. Da bin ich nun von knapp 350 KB, auf stolze 25 KB gekommen. Das ist irgendwie verwirrend die ganze Sache... Aber was die Größe anbelangt, bin ich durchaus zufrieden. Wenn ich dann noch UPX.exe über die 25 KB loslasse, dann bin ich bei ca. 10 KB zu Hause, was auch schon eine beachtlich kleine Anwendung darstellt. Im Image habe ich dann nach bpl gesucht, aber ich konnte noch keine finden, was mich zu der Annahme verleitet, das die RunTime Funktionen von Delphi nicht immer übernommen werden und erst bei Gebrauch gelinkt werden, womit ich auch zufrieden bin. Die Verringerrung des Icons brachte auch ein paar kleine Unterschiede in punkto Größe. Es kann also heißem: stay tuned ... |
AW: RTTI abschalten oder minimieren - HowTo ?
Zitat:
Packages machen nur Sinn für umfangreiche Projekte aus vielen Modulen (EXEs), die sich viele Packages teilen. Dann kann die Größe der Distribution dadurch kleiner werden, aber die Installation wird komplexer. BPLs = Embas Version der DLL Hell.:wink: |
AW: RTTI abschalten oder minimieren - HowTo ?
Zitat:
Meine Erfahrung mit kleinen Files ist aktuell, dass mein Virenscanner anspricht. UPX unterstützt noch das Misstrauen des Virenscanners. Und ja, je grösser das Bild umso stärker ist die Gewichtung bei kleinen Files. |
AW: RTTI abschalten oder minimieren - HowTo ?
Zitat:
Die liegt bei Festplatten bis 16 TByte bei 4kb |
AW: RTTI abschalten oder minimieren - HowTo ?
nu.
- er meint sicherlich Sektor-Größe - die ist Standard 4.096 Bytes oder 4 KB groß. - selbst mit Assembler habe ich keine gültige Windows .EXE programmieren können, die kleiner als 2.048 Bytes ist. Man muss halt abwiegen: - viele Dateien kleinere, kleine Sektor-Größe - wenige Dateien größere Dateien, größere Sektor-Größe... Ok, zurück: Ich habe jetzt aus dem Verzeichnis: C:\Program Files (x86)\Embarcadero\Studio\23.0\bin - die rtl290.bpl in das Verzeichnis meiner "kleinen" Ausgabedatei kopiert - vorher hat Windows gemekkert, das rtl290.bpl nicht auffindbar ist - nun bekomme ich den Fehler 0x0007b - was auf ein Image-Fehler hindeutet - die rtl290.bpl ist rund 12 MegaByte groß :coder2: |
AW: RTTI abschalten oder minimieren - HowTo ?
So kleine Dateien landen bei NTFS eh in der MFT, als Attribut am Datensatz, und nicht in einem eigenen Sector Cluster auf der Platte. (falls ich das richig verstanden hatte)
Das Meiste spart man ein, wenn einfach nur die Debuginfos nicht gelinkt werden. (RELEASE) |
AW: RTTI abschalten oder minimieren - HowTo ?
ja, richtig: RELEASE.
Aber mich würde doch schonmal interessieren, warum da ein 0x007b Fehler kommt, wenn man die RT Pakete nicht mit einlinkt... Wie der Peter schon schrieb, macht das ja auch irgendwann oder irgendwie Sinn. |
AW: RTTI abschalten oder minimieren - HowTo ?
ok.
ich habe es jetzt hindeicseln können: in den Optionen: - RELEASE - ohne Packages (TRUE) - Optimize dann eine Batch-Datei (run.bat):
Code:
und der 0x007b Fehler fly away...
@echo off
set BDS=C:\Program Files (x86)\Embarcadero\Studio\23.0 set BDSINCLUDE=C:\Program Files (x86)\Embarcadero\Studio\23.0\include set BDSCOMMONDIR=C:\Users\Public\Documents\Embarcadero\Studio\23.0 set FrameworkDir=C:\Windows\Microsoft.NET\Framework\v4.0.30319 set FrameworkVersion=v4.5 set FrameworkSDKDir= set PATH=%FrameworkDir%;%FrameworkSDKDir%;C:\Program Files (x86)\Embarcadero\Studio\23.0\bin;C:\Program Files (x86)\Embarcadero\Studio\23.0\bin64;C:\Program Files (x86)\Embarcadero\Studio\23.0\cmake;%PATH% set LANGDIR=DE set PLATFORM= set PlatformSDK= .\win64\Release\<das programm.exe> wenn ich nun auch noch upx.exe auf die bestehende DLL und die Startanwendung (EXE) losjage, dann bin ich bei 21 KB zu Hause. Somit: Fall gelöst. |
AW: RTTI abschalten oder minimieren - HowTo ?
Lade dein UPX-tes Programm mal bei VirusTotal hoch und schau dir an wieviele Scanner dein Programm als Virus erkennen.
UPX ist niemals eine clevere Idee wenn man sein Programm vielen Leuten weitergeben will. UPX-te Programme werden oft als Viren erkannt. Das wird sich auch nicht ändern. |
AW: RTTI abschalten oder minimieren - HowTo ?
nu.
Ich will ja keinen Virus verbreiten. Ich komme aus der MS-DOS Welt, wo Bits und Bytes noch sehr hoch im Kurs standen, soviel wie möglich, mit so wenig binary Code zu erzeugen. Da hat man zum Beispiel ein "ClearScreen" programmiert, um den Bildschirm zu löschen. Heute muss man einen weit aus höheren Aufwand betreiben, das ein Fenster als Vollbild dargestellt wird, und in diesen der dargestellte Text dann gelöscht werden soll, weil man eine weitere Bildschirm(text)seite darzustellen, aber dafür dann megabytes an binary auf der Festplatte zu verbraten. Das ist so ziemlich der gröbste Wunsch von mir, wieder auf das Level zu kommen, wo man mit kleinen Programmen, viel schafft. Aber: Ja, da gebe ich Euch recht, das Heute (aus welchen Gründen auch immer) Software immer schneller fertig werden muss, und es diese DLL Hell gibt, wenn ständig pätsches riliesed werden (müssen). |
AW: RTTI abschalten oder minimieren - HowTo ?
UPX und Anderes kennen aber viele (ordentliche) Virenscanner und entpacken es vor der Analyse.
Was dann oft nur noch angemeckert wird, sind modifikationen/verschleierungen, welche dieses Entpacken verhindern sollen. Was aber "normal" unpraktisch war, dass sowas z.B. Optimierungen für ein schnelleres Laden verhindert, durch Wiederverwenden und Teilen von vorbereitetem DLL-Speicher, aber seit ASLR relativiert das sich etwas. Die Ersparnis durch UPX war gegen die Nachteile nur noch minimal, da Speicher und Traffic diesbezüglich selbst eigentlich kein Problem mehr sind. |
AW: RTTI abschalten oder minimieren - HowTo ?
nu.
Den UPX kann ich ja weg lassen, dann habe ich aber immernoch ein "kleines" Image. Ich bin das erzeugte Image mal durchgegangen, und fand nur einen Eintrag auf rtl290.bpl. Ich vermute aber, das dazu noch etliche DLL-images dazugehören... ? Hat da schonmal Einer/Eine eine Liste gemacht, und so großzügig ist, diese zu teilen ? Die Windows DLL images, sind schon klar (kernel32 und user32). |
AW: RTTI abschalten oder minimieren - HowTo ?
Zitat:
![]() ![]() |
AW: RTTI abschalten oder minimieren - HowTo ?
Ich will Dir wirklich nicht den Wind aus den Segeln nehmen, aber
Zitat:
Zitat:
Wenn Du das natürlich alles aus Spaß machst, dann viel Freude an der kleinen EXE mit der großen BPL. Und UPX gepackte EXEn sind in nicht wenigen Firmen ein nogo. O'Neill |
AW: RTTI abschalten oder minimieren - HowTo ?
nu.
Ihr habt ja recht. Im Gegensatz zu 12 MB sind die EXE mit 400 KB Pinatz. Der Thread kann erstmal als "solved" makiert werden. |
AW: RTTI abschalten oder minimieren - HowTo ?
Jo, abgesehn davon, dass es mit BPL mehr ist, da in BPLs immer alles drin ist,
während in die EXE einkompiliert, der Linker viel Ungenutztes weglassen kann. Hat man oft kleine/teilweise Updates, innerhalb der selben Delphi-Version und besteht das Projekt aus vielen eigenen EXE/DLLs, dann können BPLs eine gute Wahl sein, z.B. auch wenn man massig und/oder große Fremdbibliotheken nutzt, ala DevExpress. Bei uns ist alles knapp über einem Gigabyte und da dann nur eine 2 MB EXE/BPL/DLL zu tauschen, das merkt man schon, bzw. ich stelle vom FinalBuilder auch noch einige ZIP bereit, also mit "Allem aus unserem eigenen Quellcode", Fremdkomponenten, sowie Zusätzliches (Python und Anderes). BPL ist mehr mit sowas wie beim .NET und der C++-Runtime-Library oder dem Java-Runtime-Environment zu vergleichen. Die EXE ist schön klein, aber dahinter liegt ein fettes Framework, was immer ALLES drin hat, was vielleicht mal wer braucht oder nicht. Zitat:
Ansonsten bleibt es eh immer quasi offen, falls irgendwann mal wieder jemand das gleiche Problem hat, es für ihn aber noch keine Lösung gibt und er sich einfach hier anschlieen könnte. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz