Packer-Befehl Frage

Für allgemeine Fragen zur Programmierung mit PureBasic.
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Packer-Befehl Frage

Beitrag 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?
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag von pogi02 »

Keiner eine Idee????

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

- www.apware.net
Aktuelles Projekt:
-
Benutzeravatar
Hume23
Beiträge: 3
Registriert: 02.02.2005 23:44

Beitrag 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.
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag 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
MfG pogi02

- www.apware.net
Aktuelles Projekt:
-
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag von pogi02 »

Hallo


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


BITTE SCHLIESSEN!!
MfG pogi02

- www.apware.net
Aktuelles Projekt:
-
Benutzeravatar
Ttobi
Beiträge: 25
Registriert: 06.03.2005 15:22
Wohnort: Made in Germany (EDDL)
Kontaktdaten:

Beitrag von Ttobi »

Sag doch bitte wie dus gemacht hast, mich interresiert das nähmlich auch!
Benutzeravatar
Justy
Beiträge: 131
Registriert: 10.09.2004 13:31
Wohnort: Feldbach / Steiermark / Österreich
Kontaktdaten:

Beitrag 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
Am Anfang erschuf der Mensch Gott.
Friedrich Nietzsche
pogi02
Beiträge: 131
Registriert: 30.10.2004 00:52
Wohnort: Österreich
Kontaktdaten:

Beitrag 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 ;)
MfG pogi02

- www.apware.net
Aktuelles Projekt:
-
Antworten