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 exe-Datei wird nicht mehr kleiner - Ressourcen (https://www.delphipraxis.net/30809-exe-datei-wird-nicht-mehr-kleiner-ressourcen.html)

SleepyMaster 29. Sep 2004 16:12


exe-Datei wird nicht mehr kleiner - Ressourcen
 
Hi ihrs

In einem Programm von mir speicher ich Daten als Ressourcen in eine exe-Datei. Mein Problem ist, dass wenn ich die Ressourcen wieder lösche die exe Datei nicht wieder kleiner wird. Zwar wird die exe nicht größer, wenn ich Daten wieder in die exe reinkopiere, bis die größe der gelöschten Daten erreicht ist, aber es ist trozdem eine Platzverschwendung, solange keine neuen Daten reinkopiert werden.

Weiß jemand eine Lösung, wie ich die exe wieder kleiner bekomme nach dem löschen der Daten?

Vielen Dank

Dax 29. Sep 2004 16:13

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
Die Resourcen sind ja in der *.res-Datei gespeichert, hast du sie dort gelöscht und dein Programm neu erstellt?

Luckie 29. Sep 2004 16:13

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
Wie löscht du die Ressourcen aus der Exe?

SleepyMaster 29. Sep 2004 16:16

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
@Dax: Ich kopiere die Ressourcen Dateien zur Laufzeit in die exe

@Luckie:

Delphi-Quellcode:
var
  hUpdate: THandle;
begin
  hUpdate:= BeginUpdateResource(pchar(ModuleFileName), false);
  if hUpdate <> INVALID_HANDLE_VALUE then
    begin
    UpdateResource(hUpdate, pchar(ResType), pchar(RessourceFileName), 0, nil, 0);
    EndUpdateResource(hUpdate, false);
    end

SleepyMaster 29. Sep 2004 16:21

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
@Luckie: Gibt es denn noch eine andere Möglichkeit die Ressourcen zu löschen?

@All: Need help! (Das Programm soll auf einem USB Stick laufen also wäre mir der Speicherplatzt schon wichtig)

rantanplan99 29. Sep 2004 16:44

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
Ich hab zwar keine Ahnung, aber vielleicht probiertst du mal mit
Delphi-Quellcode:
hUpdate:= BeginUpdateResource(pchar(ModuleFileName), TRUE);
EndUpdateResource(hUpdate, false);
sämtliche Resourcen zu löschen und die änderungen in die EXE speichern lassen mit EndUpdateResouce...
und dann die weiterhin benötigten Resourcen wieder hinzuzufügen?
Delphi-Quellcode:
  hUpdate:= BeginUpdateResource(pchar(ModuleFileName), false);
  // Alle Resourcen wieder hinzufügen...
  UpdateResource(hUpdate, pchar(ResType1), pchar(RessourceFileName1), 0, nil, 0);
  UpdateResource(hUpdate, pchar(ResType2), pchar(RessourceFileName2), 0, nil, 0);
  // ...
  EndUpdateResource(hUpdate, false);
Ist vielleicht ein Versuch wert, oder?

SleepyMaster 29. Sep 2004 16:59

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
Nein, dass macht die exe leider nicht kleiner.

Hätte sonst noch jemand eine Idee?

Olli 1. Jul 2005 13:58

Re: exe-Datei wird nicht mehr kleiner - Ressourcen
 
Was du mit den o.g. Funktionen machst ist nur, daß du die Referenzen aus dem entsprechenden Verzeichnis der PE entfernst. Jedoch bräuchtest du ein Realignment - dazu konsultierst du am besten die einschlägigen Infos zum PE-Format (LUEVELSMEYER usw.).


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz