EXE nicht komprimierbar?
Verfasst: 31.03.2005 23:51
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 !!????
Also wenn ihr ne idee habt bitte sofort posten
Sie haben dann noch genau die selbe Größe
Mit allen anderen Dateiarten geht es !!????

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