Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ressourcen-Datei vergrößert mein EXE. Warum??? (https://www.delphipraxis.net/15574-ressourcen-datei-vergroessert-mein-exe-warum.html)

max666 31. Jan 2004 15:21


Ressourcen-Datei vergrößert mein EXE. Warum???
 
Hallo!

Ich bin dabei ein kleines Programm zu schreiben.
Dabei binde ich ein paar BMP-Bilder von einer RES-Datei in mein Programm ein.
Das funktioniert auch alles.

Nur leider ist mir aufgefallen, dass die Compilierte EXE-Datei um so größer wird, je mehr Bilder ich in die RES-Datei einbinde.
Um den Vorgang auf die Spitze zu treiben, habe ich ein Bild 10 mal in die RES-Datei eingebunden. Danach war die RES-Datei ca. 12 MB groß. Anschließend habe ich das Project compiliert und die erzeugt EXE-Datei war ca. 13 MB groß, obwhl ich die Bilder in Delphi nicht eingebunden habe.
Ich kann als sagen, dass die Bilder nicht erst zur Laufzeit, sondern schon beim Compilieren in die EXE-Datei eingebunden werden. Um eine Datei möglichst klein zu halten, ist dies jedoch nicht erwünscht.

Mit folgenden Code hole ich die Bilder in Delphi hinnein.


Delphi-Quellcode:
implementation

{$R *.DFM}
{$R resbitmap.res}


procedure loadbmp;
begin
Form1.image1.Picture.Bitmap.LoadFromResourceName(0,'bild01');
Form1.Image5.Picture.Bitmap.LoadFromResourceName(0,'bild02');
Form1.Image9.Picture.Bitmap.LoadFromResourceName(0,'bild03');
usw...
Hat jemand Rat?

Gruß aus den Emsland
max666

MrKnogge 31. Jan 2004 15:27

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Ich versteh jetzt deine Frage nicht ?

Wenn du die Bilder in deine Exe einbindest, ist doch klar, dass sich die Exe auch vergrössert, oder etwa nicht ?

Wenn du die Exe kleiner haben möchtest, kannst du die Bilder auch normal laden:
Delphi-Quellcode:
Image1.BitMap.LoadFroamFile('C:test\bmp');
Allerdings müsstest du dann die Bilder extra mitliefern...

max666 31. Jan 2004 15:46

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Hallo!

Ich glaube ich habe das Prinzip nicht verstanden.

Ist eine RES-Datei nicht dazu da, dass man die Bild darin erst zu Laufzeit laden kann, um so die Größe einer EXE-Datei möglichst klein zu halten?

Welchen Sinn hat eine RES-Datei, wenn sie nach dem Compilieren überflüssig geworden ist, da ihre Bilder sich in der EXE-Datei befinden.

Wie kann ich nun die Bilder zur Laufzeit einbinden, um mein Ziel - die Dateigröße der RES-Datei möglichst klein zu halten, zu erreichen.

Wäre es

Gruß
max666

MrKnogge 31. Jan 2004 15:48

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Mit einer Res-Datei speicherst du die Bilder als Ressource in deiner Exe !

Dagon 31. Jan 2004 15:50

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Eine RES-Datei ist dazu da, Ressurcen (Bilder, Sound, Exe's etc.) direkt ins Pogramm ein zu binden. So ist alles in einer Exe drin, und nicht lose in Ordner oder so.
Wenn du also Bilder per RES einbindest, so wird die Exe dementsprechend auch grösser.

max666 31. Jan 2004 15:53

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Hallo!

Du hast Recht.

Wenn ich Bilder so eintrage:

Delphi-Quellcode:

image2.Picture.Bitmap.LoadFromFile('c:\test\test01.bmp');
werden sie erst zu Laufzeit eingebunden. Jetzt habe ich aber die einzelnen Bilder ín meinen Projekt rum fliegen.

Kann man es nicht machen, dass die Bilder in einer großen Datei gesammelt und dennoch erst zu Laufzeit geladen werden können.

Gruß
max666

MrKnogge 31. Jan 2004 15:57

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Du könntest eine Ressource-DLL verwenden.

max666 31. Jan 2004 16:01

Re: Ressourcen-Datei vergrößert mein EXE. Warum???
 
Hallo!

Davon habe ich schon was gelesen. Gute Idee und danke schon mal für Dein Wissen.

Gruß
max666


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 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