Seite 1 von 1
Wie einzelne Datei entpacken?
Verfasst: 27.11.2009 18:34
von Syntacks_Error
Code: Alles auswählen
Procedure CreatePackfile() ; erzeugt gepackte Datei
file = CreateFile(#PB_Any,"test.txt")
For x = 1 To 100
WriteStringN(file, "1234567890")
Next
laenge = Lof(file)
FileSeek(file,0)
*quelle = AllocateMemory(laenge)
ReadData(file,*quelle,laenge)
*ziel = AllocateMemory(laenge+8)
laengePak = PackMemory(*quelle, *ziel, laenge,9)
filePak = CreateFile(#PB_Any,"test.txt.pak")
WriteData(filePak,*ziel,laengePak)
FreeMemory(*quelle)
FreeMemory(*ziel)
CloseFile(file)
CloseFile(filepak)
EndProcedure
Procedure UnPackfile() ; entpacken
file = OpenPack("test.txt.pak")
Debug file
;*mem = NextPackFile() ; ergibt Crash
laenge = PackFileSize()
Debug laenge ; ergibt 0
EndProcedure
CreatePackfile()
UnPackfile()
Das Packen geht ja, aber wie geht das Entpacken? Dieses "NextPackfile" scheint eher für Archive gedacht zu sein und PackfileSize ergibt immer "0". OpenPak() gibt zwar "1", aber damit kann ich nichts anfangen. Wie komme ich an die Laenge der entpackten Datei heran, die ich ja für UnpackMemory(QuellSpeicherID, ZielSpeicherID) brauche, da ich ja wohl vorher den Speicher allocieren muß?
Re: Wie einzelne Datei entpacken?
Verfasst: 27.11.2009 18:41
von STARGÅTE
in der Hilfe steht das OpenPack nur dafür ist, wenn die Datei auch mit CreatePack gepackt wurde, das sehe ich nicht bei dir.
soll heißen du musst die datei erst nortmal mit Read-Befehlen einlesen und dann das UnpackMemory nutzen
wenn du die Datei in speicher gelsene hast
Re: Wie einzelne Datei entpacken?
Verfasst: 27.11.2009 19:03
von Syntacks_Error
Tatsächlich, damit und mit addpackmemory beim Verpacken gehts:
Code: Alles auswählen
Procedure CreatePackfile()
file = CreateFile(#PB_Any,"test.txt")
For x = 1 To 100
WriteStringN(file, "1234567890")
Next
laenge = Lof(file)
FileSeek(file,0)
*quelle = AllocateMemory(laenge)
ReadData(file,*quelle,laenge)
filePak = CreatePack("test.txt.pak")
Ergebnis = AddPackMemory(*quelle, laenge,9)
ClosePack()
FreeMemory(*quelle)
CloseFile(file)
EndProcedure
Procedure UnPackfile()
file = OpenPack("test.txt.pak")
Debug file
*mem = NextPackFile()
debug *mem
laenge = PackFileSize()
Debug laenge
Text$ = PeekS(*mem,laenge)
Debug text$
EndProcedure
CreatePackfile()
UnPackfile()