EXE nicht komprimierbar?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

EXE nicht komprimierbar?

Beitrag von Pure-r-Freak »

Mein Problem ist, dass wenn ich mit den bsp aus dem codearchiev eine exe packen will, dass sie nicht kleiner wird.

Sie haben dann noch genau die selbe Größe

Mit allen anderen Dateiarten geht es !!???? :roll:

Also wenn ihr ne idee habt bitte sofort posten

Code: Alles auswählen

; German forum:
; Author:
; Date: 17. February 2003

;- Pack
; Dateien auswählen, Namen geben und Packen: 
NewList DateienPacken.s() ;Damit man unbegrenzt viele Dateien packen kann, wird eine dynamisch verknüpfte Liste erstellt. 
Pfad$ = "C:\" 

;Das Auswahlfenster für die zu packenden Dateien wird erstellt. #PB_Requester_MultiSelection = Auswahl mehrere Dateien möglich.  
Datei$ = OpenFileRequester("Dateien zum Packen auswählen", Pfad$, "Programme (*.exe)|*.*", 0, #PB_Requester_MultiSelection) 

If Datei$ + Datei$                         ;Wenn eine Datei ausgewählt wurde... 
  AddElement(DateienPacken())              ;wird die Liste um ein Element erweitert... 
  DateienPacken() = Datei$                 ;und der Name der Datei in die Liste geschrieben 
  Repeat 
    WeitereDatei$ = NextSelectedFileName() ;Weitere Dateien können ausgewählt werden. 
    If WeitereDatei$ 
      AddElement(DateienPacken()) 
      DateienPacken() = WeitereDatei$ 
    EndIf 
  Until WeitereDatei$ = "" 
  ;Hier kann man den Namen der fertig gepackten Datei angeben 
  NamePackDat$ = InputRequester("Dateien Packen", "Wie lautet der Name der Pack-Datei?", "Datei.pac") 
Else  ;wurde keine Datei zum Packen ausgewählt, wird... 
  End ;das Programm beendet. 
EndIf 


ResetList(DateienPacken())                 ;Die Liste wird zurück gesetzt, damit man sie neu auslesen kann. 
If CreateFile(0, Pfad$ + "Liste.tmp")      ;Hier wird eine temporäre Datei erstell, in der die Dateinamen gespeichert werden. 
  While NextElement(DateienPacken()) 
    Dateiname$ = GetFilePart(DateienPacken()) 
    WriteStringN(Dateiname$) 
  Wend 
EndIf 
CloseFile(0) 
    
If CreatePack(Pfad$ + NamePackDat$)        ;Die Pack-Datei wird erstellt. 
  AddPackFile(Pfad$ + "Liste.tmp")         ;Die temporäre Datei zuerst reingeschrieben. 
  ResetList(DateienPacken())                
  While NextElement(DateienPacken())       ;Und jetzt alle Dateien, die in der Liste stehn. 
    If AddPackFile(DateienPacken(), 0): EndIf 
  Wend 
EndIf  
ClosePack() 

DeleteFile(Pfad$ + "Liste.tmp")            ;Nun kann die temporäre Datei wieder gelöscht werden. 





;-Unpack
;Gepackte Datei aussuchen und wieder entpacken: 
NewList DateienEntpacken.s() ;Liste zum Entpacken erstellen 
Pfad$ = "C:\" 

;Auswahlfenster für die gepackte Datei 
PackDatei$ = OpenFileRequester("Dateien auswählen", Pfad$, "Gepackte Dateien (*.pac)|*.pac", 0) 
If OpenPack(PackDatei$)                                 ;Gepackte Datei öffnen. 
  *SpeicherAdresse = NextPackFile()                     ;Die erste Datei in eine Speicheadresse schreiben. 
  Groesse = PackFileSize()                              ;Die Groesse der Datei feststellen. 
  ;Die Datei auslesen lassen, damit man die Namen der gepackten Dateien erhält und in die Liste schreiben. 
  For Schleife = 1 To Groesse                            
    String$ = PeekS(*SpeicherAdresse, Groesse)  ; inhalt der datei kommt in String$
    Position = FindString(String$, Chr(13), Schleife) ;Es wird nach ???? gesucht
    AddElement(DateienEntpacken()) 
    Laenge = Position - Schleife     ;Endposition der Datei - 1  
    DateienEntpacken() = Mid(String$, Schleife, Laenge) ;Der Inhalt wird ausgeschn. und in die Liste kopiert
    Schleife = Schleife + Laenge + 1   ;Schleife bekommt den Wert: 1+Länge.d.Datei+1,  
     Next Schleife    
Else 
  End 
EndIf 


If CreateDirectory("C:\Entpackt") :EndIf ;Ein Verzeichnis wird erstellt, in welches die Dateien entpackt werden sollen. 

ResetList(DateienEntpacken()) 
While NextElement(DateienEntpacken()) 
  *GepackteDatei = NextPackFile() 
  Groesse = PackFileSize() 
  If CreateFile(0, "C:\Entpackt\"+DateienEntpacken()) ;Eine Datei mit einem Namen aus der Liste wird erstellt. 
    WriteData(*GepackteDatei, Groesse)                ;Die Datein werden in die Datei geschrieben. 
  EndIf 
  CloseFile(0)                                        ;Datei schließen, damit eine neue erstellt werden kann. 
Wend 

Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Hab den Code getestet, funktioniert Einwandfrei. Vielleicht hast Du zu kleine Dateien gewählt
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: EXE nicht komprimierbar ??????????

Beitrag von Kiffi »

> Mein Problem ist, dass wenn ich mit den bsp aus dem codearchiev eine
> exe packen will, dass sie nicht kleiner wird.

vielleicht ist die EXE schon gepackt (Stichwort: UPX).

Grüße ... Kiffi
Benutzeravatar
Pure-r-Freak
Beiträge: 74
Registriert: 08.03.2005 13:40

Beitrag von Pure-r-Freak »

Jaaaa ihr habt wohl recht habs mit anderen versucht und es hat endlich geklappt! :bounce:
vielleicht ist die EXE schon gepackt (Stichwort: UPX).
Was sind den UPX exe????
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

UPX kann exe, dll und sys Dateien packen, so das diese lauffähig bleiben. Packrate ca. 50%. Gibts auch für Linux. Grafische Oberfläche findest Du auf meiner Homepage: http://de.geocities.com/ts_softde oder ein Tool für die PB-Ide im PureArea.net von Falko

Gruß Thomas

[Edit]Nachtrag: Hier der Direktlink: http://de.geocities.com/ts_softde/SFX_UPX-GUI.zip [/Edit]
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Als Querverweis hier ein weiterer Thread zu dem Thema:
http://forums.purebasic.com/german/view ... sc&start=0

Nicht als Kritik zu verstehen, war tatsächlich nicht so einfach zu finden :allright:
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Beitrag von GPI »

Anmerkung zu UPX:

Durch das Packen erhöht sich der Speicherverbrauch in RAM erheblich.

Und meiner Meinung nach hat man gewöhnlich mehr HDD-Platz als RAM und zum verschicken über E-Mail etc. pack ich es eh mit rar,zip, weiß-der-geier.

UPX ist meiner Meinung nach einfach nur unnütz. (ok, wenn man programme auf einen MEmory Stick unter bringen muß, ansonsten unbrauchbar).
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Selbst von der HDD sind UPX-gepackte Programme schneller geladen durch ihre kleinere Größe. Dieser Geschwindigkeitvorteil ist größer als die Zeit, die das entpacken im Speicher benötigt. Angesichts von 512 und mehr MB RAM Computern versteh ich GPI's Argumentation nicht. Hab meine Programme fast immer mit UPX gepackt und werde es auch weiterhin tun, solange ich keine schlechten Erfahrungen damit habe.

Meine Anmerkung zur Anmerkung

Aber nicht weiter Diskutieren, sondern entscheidet lieber selbst

Gruß Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
CNESM
Beiträge: 311
Registriert: 29.08.2004 15:16
Kontaktdaten:

Beitrag von CNESM »

Hi,
UPX ist meiner Meinung nach einfach nur unnütz
Unnutz ist alles auf der Welt, also auch dein Posting :D :freak:
Antworten