![]() |
Einfluß auf die Größe der EXE-Dateien
Hallo,
ich habe ein paar meine Oldi-Programme überarbeitet, damit sie auch unter Windows 10 laufen. Mal ein kleines Beispiel, mein Programm DateTime. Wenn man das in einem CMD-Fenster aufruft, dann werden Datum und Uhrzeit protokolliert, danach wird das Programm beendet.
Code:
Die erste Version habe ich vor vielen Jahren mit TASM gemacht, da wurde eine DateTime.COM erstellt, die war 381 Bytes lang.
Microsoft Windows [Version 10.0.14393]
(c) 2016 Microsoft Corporation. Alle Rechte vorbehalten. D:\Delphi10RAD\HK\DateTime>datetime -------- Datum: 20.01.2017 --- Tag: Freitag ------ Zeit: 13:27:18 --------- Dann habe ich dieses Programm mit Delphi 3,5,6,7 gemacht. Mit Delphi 7 wird eine DateTime.exe erstellt, die ist 372.736 Bytes lang. Nun habe ich mit RAD Studio 10.1 Berlin das gleiche Programm erzeugt (gleicher Source-Code wie bei Delphi 7), da wächst das Programm auf 2.153.984 Bytes. Einen ähnlichen Effekt habe ich auch bei anderen Programmen bemerkt. EXE aus RAD-Studio 10.1 Berlin haben eine vielfache Dateigröße gegenüber der EXE-Dateien aus Delphi 7. Habe ich da bei DEBUG o.ä. etwas nicht richtig eingestellt ? DEBUG kann ich auch mit Delphi 7 machen. |
AW: Einfluß auf die Größe der EXE-Dateien
Es ist in den RTL- und VCL-Units eben sehr viel an Funktionalität dazugekommen, die der Linker nicht immer automatisch weglassen kann.
Man kann einiges aus den Exen entfernen, z.B. die RTTI Informationen, aber ganz klein ist es trotzdem nicht. Eine minimale Kommandozeilenanwendung ist in Delphi 10.1 ca. 43 KiB groß. Mit System.SysUtils sind es dann schon 136 KiB. Mit DateUtils sind es dann 521 KiB. Deine Exe-Größe lässt mich aber vermuten, dass du Vcl.Forms oder andere VCL-Units eingebunden hast. Denn erst damit kommt man sofort über 2 MiB (in der Release-Buildkonfiguration!). Oder du hast noch die Debug-Buildkonfiguration aktiv. |
AW: Einfluß auf die Größe der EXE-Dateien
Liste der Anhänge anzeigen (Anzahl: 1)
Es ist eine Konsolenanwendung. Ich hänge die mal als ZIP an, falls es interessiert. Für Hinweise wäre ich wirklich dankbar.
|
AW: Einfluß auf die Größe der EXE-Dateien
Liste der Anhänge anzeigen (Anzahl: 1)
Eigentlich wollte ich das kleinere Trivial-Programm DateTime anhängen
|
AW: Einfluß auf die Größe der EXE-Dateien
Zitat:
Delphi-Quellcode:
usw. Es ist also keine Konsolenanwendung, die auch als solche erstellt worden wäre.
uses Forms
Grüße Dalai |
AW: Einfluß auf die Größe der EXE-Dateien
Konsolenanwendung Beispiel:
![]() |
AW: Einfluß auf die Größe der EXE-Dateien
Liste der Anhänge anzeigen (Anzahl: 1)
141 kB mit XE7
Delphi-Quellcode:
program Project1; //20170120
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; Var DatumZeit : TDateTime; ZeitDatum : TDateTime; DatumS : String; // "tt.mm.jjjj" ZeitS : String; WoTgNr : Integer; TageS : Array[1..7] of String; Meldung : String; begin try DatumS := 'tt.mm.jjjj'; TageS[1] := 'Sonntag ---'; // je 12 Bytes TageS[2] := 'Montag ----'; TageS[3] := 'Dienstag --'; TageS[4] := 'Mittwoch --'; TageS[5] := 'Donnerstag '; TageS[6] := 'Freitag ---'; TageS[7] := 'Sonnabend -'; DatumZeit := Date; ZeitDatum := Time; DatumS := DateToStr(DatumZeit); ZeitS := TimeToStr(ZeitDatum); WoTgNr := DayOfWeek(DatumZeit); Meldung := '-------- Datum: '+DatumS+' --- Tag: '+TageS[WoTgNr]+'--- Zeit: '+ZeitS+' ---------'+#$07+#$0D+#$0A; WriteLn(Meldung); ReadLn; // eingefügt für Test except on E: Exception do Writeln(E.ClassName, ': ', E.Message); end; end. |
AW: Einfluß auf die Größe der EXE-Dateien
Als richtige Konsolenanwendung komme ich unter Berlin auf 145.920 Byte.
|
AW: Einfluß auf die Größe der EXE-Dateien
Ich bedanke mich für Eure Antworten. Mein Fehler war es offenbar, davon auszugehen, wenn man {$APPTYPE CONSOLE} einfügt, dass es damit eine Konsolenanwendung ist. Vom Ergebnis her ist es das ja auch.
Nun habe ich noch als Release compiliert - da ist die EXE nur noch halb so groß, wie bei D7 = 145.408 Bytes. Ich habe einfach das D7-Projekt in D10 übernommen und die D7.dpr geöffnet, was ja auch funktioniert. Den Rest hat D10 gemacht. Nun habe ich mit D10 eine leer Konsolenanwendung erstellt und in diese die PGM-Teile eingefügt - so ist es natürlich korrekter, macht aber etwas mehr Arbeit. Nochmals vielen Dank. ---------- Ergänzung Ich habe nun unter D7 auch noch einmal ein richtiges korrektes Konsolen-Projekt erstellt und neu compiliert. Da ist die EXE nur noch 47.616 Bytes groß. |
AW: Einfluß auf die Größe der EXE-Dateien
Vielleicht interessant dazu, mein Blog Post ueber Delphi Console Applications von 2014 (aber immernoch aktuell):
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:13 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