Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateigröße reduzieren (Compiler) (https://www.delphipraxis.net/27115-dateigroesse-reduzieren-compiler.html)

endeffects 4. Aug 2004 16:13


Dateigröße reduzieren (Compiler)
 
Hallo,

ich möchte die Dateigrößen meiner Projekte verringern, oftmals liegen
diese bei über 400kb für wenige Zeilen Code. Gibt es dazu irgendwo ein Tutorial
oder ein paar gute Tips was man da tun kann?

sakura 4. Aug 2004 16:16

Re: Dateigröße reduzieren (Compiler)
 
Gut 350 KB sind das Grundgerüst der VCL, also aller Komponenten. Die bekommst Du nur weg, wenn Du alles von Hand programmierst.

Stichwort: Hier im Forum suchennonVCL, [df]nonVCL[/df], Bei Google suchenDelphi nonVCL
Oder Luckies Webseite unter Tutorials (WinAPI, nonVCL)

...:cat:...

Phoenix 4. Aug 2004 16:16

Re: Dateigröße reduzieren (Compiler)
 
Du kannst nonVCL programmieren. Luckie hat dazu ein paar tutorials.

Du kannst die .exe allerdings z.b. auch mit Hier im Forum suchenUPX packen.

Luckie 4. Aug 2004 16:17

Re: Dateigröße reduzieren (Compiler)
 
In dem du auf die VCL verzichtest. Wie das geht kannst du hier nachlesen: http://tutorials.luckie-online.de
Alternativ wären noch Exe-Packer Bei Google suchenupx eine Möglichkeit. Ich würde aber davon abraten, da sie das Windows-Speichermanagment aushebeln und man genau wissen sollte, was man tut.

hitecmaus 4. Aug 2004 16:37

Re: Dateigröße reduzieren (Compiler)
 
Hallo!!

Soll die Datei klein sein damit man sie gut verschicken kann oder soll die nur zum programmieren oder zum speichern kleiners sein.

Wenn du die Datei zum Beispiel zum download angeboten werden soll, kannst du sie ja mit Winrar archivieren. :shock:
Geht super hab ich schon ausprobiert!!


Kai 8)

DelphiFreund 4. Aug 2004 17:05

Re: Dateigröße reduzieren (Compiler)
 
@hitecmaus: Ich denke nicht, dass er das damit gemeint, ich denke, er will das es wenig Arbeitsspeicher verbraucht. (Das Problem hab ich nämlich auch)

Gruß DelphiFreund

Luckie 4. Aug 2004 17:09

Re: Dateigröße reduzieren (Compiler)
 
Die Größe der Exe hat nicht unbedingt was mit dem verbrauchten Speicher zu tun. Ich kann auch in einer 16 KB großen nonVCL Exe 1 MB Speicher alloziieren und das war es dann.

shmia 4. Aug 2004 17:35

Re: Dateigröße reduzieren (Compiler)
 
Zitat:

Zitat von endeffects
ich möchte die Dateigrößen meiner Projekte verringern, oftmals liegen
diese bei über 400kb für wenige Zeilen Code. Gibt es dazu irgendwo ein Tutorial
oder ein paar gute Tips was man da tun kann?

Du kannst auch Packages :spin: verwenden. Damit verringert sich die Grösse eines Projekts mit
einem leeren Formular auf 15kb ohne dass du auf die VCL verzichten musst.
Nachteile:
  • die Packages müssen mitgeliefert werden. Dies ist Vergleichbar mit den Runtime-Libraries von VB
  • der Bedarf an Hauptspeicher wird durch Verwendung von Packages nicht verringert
  • nur wenn die mehrere EXEs hast, die die gleichen Standard-Packages verwenden macht die Sache Sinn
Vorteile:
  • du kannst ganz "normal" programmieren, ohne dich mit den Internas von Windows zu quälen
  • Programme mit VCL sind schneller programmiert, besser verständlich und leichter erweiterbar
    als ohne VCL

endeffects 4. Aug 2004 17:54

Re: Dateigröße reduzieren (Compiler)
 
hallo,

danke für die zahlreichen antworten,
momentan geht es mir speziell um die dateigröße
meiner dll's die wie schon gesagt über 400kb groß
werden und nur ein paar seiten code enthalten

von dem packen der dll's halte ich nicht so viel,
ich möchte lieber den unnötigen kram aus diesen
dateien entfernen

ich hab dazu in einer newsgroup folgendes gefunden:

Zitat:

1) Using TForm to output events
2) Output events to debug output (Delphi's Event Log), it's also features creation of 'Lite size' DLL

This configurations controlled by conditional define - USE_FORM (Project->Options->Directories/Conditionals).

In second case pay attention on this points:
Even if U not use TForm, the DLL size is approx. ~350 KB.
When DLL is build and registerd in IDE, Delphi 'transparently' recreates
project.PAS unit.
This unit contains this USES clause by default:
"uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL;"
Graphics and OleCtrls units are responsible for blowing DLL size by
approx. 250 KB, so remove them (actually U can remove all clause, sinse TGUID defined in System.PAS)
and rebuild - U'll get ~87 KB DLL.
das hab ich auf delphi 7 ausprobiert und hatte damit leider keinen wirklichen erfolg,
vielleicht hab ich auch irgendwo etwas übersehn, aber die dateigröße
hat sich nicht wirklich verändert

nailor 4. Aug 2004 18:40

Re: Dateigröße reduzieren (Compiler)
 
je nachdem, was deine dlls machen sollen, wäre nonVCL durchaus ne überlegung wert. an sonsten ist es nicht so einfach, die größe zu verringern

dizzy 4. Aug 2004 19:15

Re: Dateigröße reduzieren (Compiler)
 
Ich hatte mal eine DLL geschrieben, die nur "Windows.pas" used. Die ist klapprige 60k groß. Es kann sich z.T. lohnen (Wenn du Delphi >= Pro. hast) benötigte Funktionen aus z.B. SysUtils herauszukopieren, um diese nicht mit einbinden zu müssen. Bei Klassen und manchen komplexeren Funktionen geht das leider nicht mehr so einfach. Für meine DLL brauchte ich z.B. die Fkt. Trim. Die ließ sich einfach kopieren.

gruss,
dizzy

Luckie 4. Aug 2004 19:29

Re: Dateigröße reduzieren (Compiler)
 
Also da eine DLL in der Regel keine Formulare enthält, sollte nichts dabei sein, was die DLL dermaßen aufblät. Die SysUtils macht nur ca. 60 KB aus, wenn ich mich nicht täusche. Die wichtigsten Routinen habe ich mir mal alle selber geschrieben und in meiner Toolbox zusammen gefasst - zu finden auf meiner Seite.

Hansa 4. Aug 2004 19:44

Re: Dateigröße reduzieren (Compiler)
 
Die VCL von Hand umzuprogrammieren, lass das mal lieber bleiben. Entweder VCL, oder eben nicht. Wenn Borland etwas intern umbaut, dann kannst du eventuell dein Programm bei einem Update wegschmeißen. Und bei jedem Update mußt du dann wieder die VCL umbauen.

Hierzu habe ich aber eine Frage :

Zitat:

Zitat von shmia
..Du kannst auch Packages :spin: verwenden. Damit verringert sich die Grösse eines Projekts mit
einem leeren Formular auf 15kb ohne dass du auf die VCL verzichten musst...

Packages verwende ich für eigene Komponenten. In dem erwähnten Zusammenhang sagt mir das aber nichts. Wie meinst du das ? Bei mir sieht es nämlich genau so aus, daß ich ein Hauptprogramm habe, aber auch noch > 20 kleine Utils, die genauso bedient werden sollen. Insofern schleppe ich 20x die VCL in den EXEn mit. Könnte ich da jetzt einiges gemeinsames auslagern, das wäre gut, denn die Uploads dauern schon, trotz DSL.

XHelp 4. Aug 2004 19:53

Re: Dateigröße reduzieren (Compiler)
 
Wenn man das programm nur mit WinAPI schreibt, kommt man auch auf kleine größe.
Dann kann man noch mit UPX oder ASPack die exe/dll verkleinern und dann passt das schon...

NicoDE 4. Aug 2004 20:23

Re: Dateigröße reduzieren (Compiler)
 
Zitat:

Zitat von XHelp
Wenn man das programm nur mit WinAPI schreibt, kommt man auch auf kleine größe.
Dann kann man noch mit UPX oder ASPack die exe/dll verkleinern und dann passt das schon...

Wenn der DLL mehrere Instanzen parallel verwendet werden, ist es (je nach Packer) keine gute Idee sie zu komprimieren.
(wenn Du alles in WinAPI schreiben willst, kannst Du auch gleich ne neue RTL schreiben ;))

XHelp 4. Aug 2004 20:37

Re: Dateigröße reduzieren (Compiler)
 
Zitat:

Zitat von NicoDE
Wenn der DLL mehrere Instanzen parallel verwendet werden, ist es (je nach Packer) keine gute Idee sie zu komprimieren.
(wenn Du alles in WinAPI schreiben willst, kannst Du auch gleich ne neue RTL schreiben ;))

Vielleicht keine gute, aber trotzdem ne Idee )))
und das mit WinAPI... ist zwar urst umständig, ist aber machbar

Hansa 4. Aug 2004 20:44

Re: Dateigröße reduzieren (Compiler)
 
Mit den Packages, damit sind wohl Laufzeitpackages gemeint @shmia ? Nur was soll ich da rein packen, außer meinen eigenen Komponenten ? Das sind vieleicht 10 Stück. In diesem Zusammenhang noch was : für meine Komponenten existiert keine BPL, warum das ?

nailor 4. Aug 2004 20:50

Re: Dateigröße reduzieren (Compiler)
 
aber da man mot dlls ja meistens wirklich nicht die gui macht (ja, es gibt ausnahmen), kann man es sich schon mal überlegen, ob man das nicht aus eine größe < 50k runterbekommt...

und um alle zu demotivieren sei nochmal auf kkrieger verwiesen.

Kernel32.DLL 4. Aug 2004 21:35

Re: Dateigröße reduzieren (Compiler)
 
[OT]

Wenn ihr richtig kleine Executables wollt, solltet ihr Assembler lernen!

Beispiel:

Windows Notepad (Visual C++ 7.0, unter WinXP Pro): 66k

Tiny Editor 1.5 (MASM32, basierend auf einer Demo, noch nicht ganz fertig): 7k

Beide haben fast die gleichen Funktionen.

[/OT]

endeffects 4. Aug 2004 21:52

Re: Dateigröße reduzieren (Compiler)
 
es geht doch nur darum unnötiges zeugs in den dateien zu vermeiden,
das hat doch nix mit asm zu tun :roll:

Hansa 5. Aug 2004 01:21

Re: Dateigröße reduzieren (Compiler)
 
Zitat:

Zitat von Kernel32.DLL
Wenn ihr richtig kleine Executables wollt, solltet ihr Assembler lernen!

Das tue ich mir aber nicht an. 8)

shmia 5. Aug 2004 08:15

Re: Dateigröße reduzieren (Compiler)
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von shmia
..Du kannst auch Packages :spin: verwenden. Damit verringert sich die Grösse eines Projekts mit
einem leeren Formular auf 15kb ohne dass du auf die VCL verzichten musst...

Packages verwende ich für eigene Komponenten. In dem erwähnten Zusammenhang sagt mir das aber nichts. Wie meinst du das ? Bei mir sieht es nämlich genau so aus, daß ich ein Hauptprogramm habe, aber auch noch > 20 kleine Utils, die genauso bedient werden sollen. Insofern schleppe ich 20x die VCL in den EXEn mit.

Genau in deinem Fall (viele EXEs) sind Runtime-Packages gut geeignet.
Dazu eines der Projekte öffnen und in den Projektoptionen auf Seite Packages das Häckchen
bei Laufzeit-Packages
setzen und neu erzeugen.
Darunter im Editfeld stehen die Packages, die eingebunden werden.
Dort haben sich aber mit der Zeit Packages angesammelt, die du für deine Projekte nicht benötigst.
Aber Besten kopierst du den ganzen String in eine Testdatei als Merkhilfe.
Dann benützt du nur die VCL70 und VCLX70 für alle Projekte.
Stück für Stück fügst du dann neue Packages hinzu. Gut dokumentieren, denn diese Packages
musst du mitliefern.

Silentium 12. Okt 2004 17:52

Re: Dateigröße reduzieren (Compiler)
 
Frage: Woher weiß ich, welche Packages ich benötige?
Denn VCL70 z.B. sagt mir nicht besonders viel über dessen Funktion.

jbg 12. Okt 2004 18:59

Re: Dateigröße reduzieren (Compiler)
 
VCL70 bedeutet, dass dort die Units Controls, Forms, Graphics, StdCtrls, ExtCtrls, ... und alle anderen Units, die die VCL bilden, enthalten sind. Die VCL70.BPL Datei benötigt aber zusätzlich die RTL70.BPL, die so Units wie SysUtils, Classes, Math, ... enthält.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 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 by Thomas Breitkreuz