.
Verfasst: 14.06.2012 10:18
.
Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.NicTheQuick hat geschrieben:Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf)
Code: Alles auswählen
Dim Tableau(10) ; Tabelle mit 11 Elementen
; Füllen der Tabelle
For i=0 To 10
Tableau(i) = i
Next
If CreatePack("/tmp/test.pak")
; Hinzufügen und Komprimieren der Daten der Tabelle
AddPackMemory(@Tableau(), SizeOf(Integer)*11, 9)
ClosePack()
EndIf
; Setzen der Tabelleninhalte auf Null
For i=0 To 10
Tableau(i) = 0
Next
; Öffnen der gepackten Datei
If OpenPack("/tmp/test.pak")
*Pointeur=NextPackFile() ; Liest und entpackt den Speicherbereich
Taille=PackFileSize() ; Ermittelt die Größe des Speicherbereichs
; Kopiert den entpackten Speicherbereich in die Tabelle
CopyMemory(*Pointeur, @Tableau(), Taille)
ClosePack()
EndIf
; Lesen der Tabelle
For i=0 To 10
Debug Tableau(i)
Next
Mit einem Streaming-fähigen Packer wäre das allerdings trotzdem möglich.Unter Windows kann ein einzelner 32bit-Prozess generell nicht mehr als 2 GB belegen, außer IMAGE_FILE_LARGE_ADDRESS_AWARE ist im Header der Anwendung aktiviert (dann sind bis zu 3 GB möglich auf einem 32bit-Windows, bzw. 4 GB auf einem 64bit-Windows).
Scheiße, ich hab doch gewusst, dass da irgendwas war. *Kopf -> Tisch*ts-soft hat geschrieben:Weil PureBasic BriefLZ unter x64 nimmt, d.h. mit PB unter x86 gepackte Dateien lassen sich unter x64 nicht entpacken und versa vice.NicTheQuick hat geschrieben:Warum sollte der Packer nicht unter 64-Bit laufen? Ich sehe davon in der Hilfe nichts (wobei man der auch nicht immer glauben darf)
Dies, sowie weitere Unzulänglichkeiten haben mich ja veranlasst das zBin Packer SDK zu schreiben
Code: Alles auswählen
ImportC "zlib.lib"
uncompress(*dest, *destLen, *source, sourceLen)
EndImport
Procedure zipUnpackMemory(*source, *dest)
Protected sourceLen = MemorySize(*source)
Protected destLen = MemorySize(*dest)
If Not uncompress(*dest, @destLen, *source, sourceLen)
ProcedureReturn destLen
EndIf
EndProcedure