Seite 1 von 1

Packer-Befehl Frage

Verfasst: 25.03.2005 12:51
von pogi02
Hallo


So auch ich hab jetzt wieder mal eine Frage.

Also ich arbeite gerade an einem kleinen Packer Programm. Das Packen und hinzufügen von dateien Funktioniert schon. Doch das entpacken macht mir jetzt Kopfzerbrechen.

Weil ich nur Zahlen statt der Datei zurückbekomme? Wie soll ich die Verpackten Dateien wieder Entpacken? Hat wer eine Lösung?

Verfasst: 25.03.2005 18:05
von pogi02
Keiner eine Idee????

Oder kann man die Datei nur wieder entpacken wenn man weisst welche datei gepackt wurden?

Verfasst: 25.03.2005 18:19
von Hume23
Du musst natürlich irgendwie kennzeichnen, wo welche Datei in dem Archiv enthalten sind und diese auch mit Namen angeben. Wenn du das geschafft hast, musst du dass gepackte File nur noch Byte für Byte auslesen und abfragen von wo bis wo welche Datei geht.

Verfasst: 25.03.2005 18:35
von pogi02
Hallo


Also ich hab mir jetzt nochmal die Hilfe richtig durchgelesen und bin auf folgendes Ergebniss gestossen.

NextPackFile() gibt nicht die Datei sondern die Speicheradresse zurück.

Original von der PB Hilfe:

Liest und entpackt die nächste gefundene Datei in der aktuellen Pack-Datei, die zuvor mittels OpenPack() geöffnet wurde. Die zurückgegebene 'Speicheradresse' wird geteilt ('shared') und sollte nie vom Programmierer freigegeben werden. Um die Größe des Speichers (d.h. die Größe der entpackten Datei) zu ermitteln, benutzen Sie PackFileSize().

So nun weisst ich jetzt das diese Zahl eine Speicheradresse ist aber welche? von der Datei oder die Speicheradresse die das Programm benutzt wo es die Datei hinterlegt?

Hab leider keinen Plan davon

Verfasst: 25.03.2005 20:00
von pogi02
Hallo


Ok hat sich erledigt funktioniert alles und mein Projekt ist auch schon fertig


BITTE SCHLIESSEN!!

Verfasst: 25.03.2005 20:19
von Ttobi
Sag doch bitte wie dus gemacht hast, mich interresiert das nähmlich auch!

Verfasst: 26.03.2005 02:33
von Justy
In der Hilfe zu OpenPack ist ein sehr gutes Beispiel das mir das AHA-Erlebnis gebracht hat:

Code: Alles auswählen

; Laden der gepackten Dateien in den Speicher... 
  OpenPack("mycompressedfiles.pak") 
    CatchSprite(0,NextPackFile())   ; InitSprite muss vorher in Ihrem Programm aufgerufen werden... 
    CatchSprite(1,NextPackFile())   ; ...die erste Datei wird als Sprite 0 geladen, die zweite als Sprite 1 
    CatchSound(0,NextPackFile())    ; InitSound muss vorher in Ihrem Programm aufgerufen werden... 
    CatchSound(1,NextPackFile())    ; ...die erste Datei wird als Sound 0 geladen, die zweite als Sound 1 
  ClosePack() 
NextPackFile() gibt einfach die Adresse zurück, an der sich die Datei im RAM befindet.

Für Dateien die nicht geCATCHed werden können (Anregung:CatchFile(#FileID,*Adresse,Laenge) ) sollte das so funktionieren:

Code: Alles auswählen

CreateFile(0,"test.txt")
OpenPack("mycompressedfiles.pak")
For i = NextPackFile() to PackFileSize()
  WriteByte(PeekB(i))
Next 
CloseFile(0)
Achtung!
Der Code wurde nicht getestet!

mfg. Justy

Verfasst: 26.03.2005 10:17
von pogi02
Wie oben schon gesagt ich hab die Lösung

aber ja deine Antwort ist nicht falsch ;) du musst halt nur mehr eine zusatz datei schreiben und mitpacken die die Original dateinamen enthält ;)