Seite 1 von 1
Packer-Library
Verfasst: 13.09.2014 14:18
von lite
Hallo
In der Hilfe steht, das PureBasic interne Packerfunktionen besitzt.
Bis jetzt funktioniert alles sehr gut.
PureBasic entpackt die Datei so wie es soll, nur werden die Attribute nicht übernommen.
Es ist möglich die Attribute selber zu setzen, aber wen man nicht abfragen kann, ob sie gesetzt sind, dann wird es schwer.
Ist es irgendwie möglich diese Informationen zu bekommen ?
Externe Dateien wie z.B. 7z.dll möcht ich nicht verwenden.
Kann jemand weiter helfen ?
Grüße
Lite
Re: Packer-Library
Verfasst: 13.09.2014 14:40
von ts-soft
Wenn es das ZipFormat sein soll und nur unter Windows laufen darf (oder eingeschränkt unter Linux),
dann kannste das
ZipEx Modul verwenden, um Dateiattribute im FileComment zu speichern, um sie
wiederherzustellen.
Gruß
Thomas
Re: Packer-Library
Verfasst: 13.09.2014 15:03
von lite
@Thomas
Vielen Dank. Das sieht schon mal sehr beeindruckend aus.
Gibts sowas auch für das Dateiformat .7z ?
Entpacken würde reichen
Lite
Re: Packer-Library
Verfasst: 27.10.2014 20:44
von lite
Hallo
Mir ist vorhin was seltsames aufgefallen.
Meiner Meinung ist es ein Bug in der 7z-Library.
Der Fehler tritt nur auf, wen mehrere Dateien im Paket sind.
Wen die erste Datei eine große Datei ist, dauert das entpacken der nachfolgenden Dateien auch sehr lange. Gefühlt so lange wie die grosse Datei, obwohl sie nur ganz klein sind.
Ein Beispiel:
Dateien die in der Paket.7z Datei sind.
1. Datei: a-test.zip (Größe: 40 MB)
2. Datei: info.txt ( 50 kb)
3. Datei: Bild.jpg ( 100 kb)
Hier mein Code:
Code: Alles auswählen
UseLZMAPacker()
TargetDir$="c:\test3\"
; Öffnet die gepackte Datei
If OpenPack(0, "c:\test1\Paket.7z", #PB_PackerPlugin_LZMA)
; Listet alle Einträge auf
If ExaminePack(0)
While NextPackEntry(0)
Debug "Name: " + PackEntryName(0) + ", Size: " + PackEntrySize(0)+"--"+TargetDir$+PackEntryName(0)
MessageRequester("vor",PackEntryName(0))
ret = UncompressPackFile(0,TargetDir$+PackEntryName(0),PackEntryName(0))
MessageRequester("","nach")
Wend
EndIf
ClosePack(0)
EndIf
Sollte es ein Fehler sein, könnte es jemand unter Bugs im englischen Forum posten.
Da mein Englisch alles andere als verständlich ist. Danke.
Grüße
Lite
--
Re: Packer-Library
Verfasst: 27.10.2014 21:01
von _JON_
Hallo lite,
das könnte dran liegen das deine .7z solide gepackt wurde. (Ist glaube ich Standard bei 7-zip)
Dann müss bei jedem extrahieren der gesamte block dekomprimiert werden und das dauert.
Re: Packer-Library
Verfasst: 27.10.2014 21:08
von lite
Das Problem daran ist, wen wir das oben genannte Beispiel nehmen.
Dauert das entpacken der 3 Dateien ca. 30 Sekunden.
Weil die erste Datei (große) schon 10 Sekunden braucht.
Würde ich jetzt die grosse Datei aus dem Paket nehmen,
dauert das entpacken der zwei kleinen Dateien nur 2 Sekunden.
Das kann doch nicht sein.
Lite
Re: Packer-Library
Verfasst: 27.10.2014 21:13
von _JON_
Pack die 7z mal neu und setze die "solid block size" zu non-solid
Dieses Archive sollte dann so schnell sein wie Du meinst.
Re: Packer-Library
Verfasst: 27.10.2014 21:38
von lite
@John
Jetzt geht es schneller.
Nur kann das nicht die Lösung sein, da die Pakte nicht von mir kommen.
Normalerweise sind in den Paketen ein paar hunderte Dateien enthalten.
Das entpacken dauert dann eine Ewigkeit, das kann kein Mensch erwarten.
So wie die Library jetzt ist, ist sie für mich unbrauchbar.
Lite
Re: Packer-Library
Verfasst: 27.10.2014 22:42
von Sicro
lite hat geschrieben:So wie die Library jetzt ist, ist sie für mich unbrauchbar.
Die Library kann dafür nichts, sondern der Solid-Block-Modus mit dem die Pakete gepackt sind, wie _JON_ schon geschrieben hat.
Bei diesem Modus werden alle Dateien als eine Datei betrachtet und gepackt. Dadurch ist es nicht möglich, einzelne Dateien zu entpacken, ohne die vorherigen Dateien ebenfalls zu entpacken.
Ausführlichere Informationen findest du hier:
http://de.wikipedia.org/wiki/Progressive_Kompression
Re: Packer-Library
Verfasst: 28.10.2014 12:00
von lite
Hallo
Ja, jetzt hab ich verstanden wo das Problem liegt. Vielen Dank.
Mir ist das gar nicht aufgefallen, das es bei 7z.exe auch so ist.
Der kleine Unterschied, das 7z.exe gleich mehrere Dateien auf einmal rausholt.
Dadurch merkt man den Effekt nicht.
PureBasic dagegen holt immer nur eine Datei raus.
Deshalb dieser enorme Geschwindigkeitsunterschied.
Würde Purebasic auch mehrere Dateien entpacken wäre es perfekt.
Z.B. mit einen neuen Befehl:
FileList$ ="a-test.zip:info.txt:Bild.jpg"
UncompressPackFileList (0,TargetDir$,FileList$)
oder unterstützt der Decompress-Befehl Dateilisten ?
Grüße
Lite