Datei Packet->Datei auslesen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

the FR3AK

Betreff: Datei Packet->Datei auslesen

BeitragSo, Jul 20, 2008 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo...ich bastele mir gerade einen File Archiver der Mehrere Dateien zu einer zusammen packt...leider habe ich ein Problem beim Entpacken aus der großen Datei:

Meine Archiv Datei ist immer so aufgebaut:
Code: [AUSKLAPPEN]
[Name der Datei]
[Größe in Bytes]
[Datei]
[Name der Datei]
[Größe in Bytes]
[Datei]
usw.


Wenn ich jetzt nach einem Dateiname in der Datei suche und dann eine Zeile weiter unten die Dateigröße auslese und das ganze dann in eine Bank lesen will kommt die Fehlermeldung "Offset out of Range"

ich weiß leider nicht was die Meldung bedeutet noch wie man das beheben kann...

Hier mal die Funktion zum auslesen aus einer Archiv Datei:

Code: [AUSKLAPPEN]
Function GetFromArchive(resFile$,Arch$)
   getit=ReadFile(Arch$)
   While Not Eof(getit)
      name$ = ReadLine(getit)
      If name$=resFile$ Then ;wenn es der gesuchte name ist...
         sizeof = ReadLine(getit) ;datei größe auslesen
         curpos=FilePos(getit) ;position in der Datei...
      End If
   Wend
   ResizeBank(newbank,sizeof) ;größe der Bank auf die größe der zu ladenden Datei setzen
   archfile=ReadFile(Arch)
   ReadBytes(newbank,archfile,curpos,sizeof) ;auslesen ab der position in der Datei
   closefile archfile

   newfile=WriteFile(resfile$)
   WriteBytes(newbank,newfile,0,sizeof) ;alles in eine neue datei schreiben
   CloseFile newfile
End Function


Die Parameter:
resFile: Die Datei die entpackt werden soll
Arch: Die Archiv Datei


vielen dank für eure hilfe...

Willi die Rübe

BeitragSo, Jul 20, 2008 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Simpler Fehler: Die Größeangabe bei ReadBytes beginnt bei 1 und die Größenangabe bei ResizeBank bei 0. Somit ist die Bank immer genau 1 Byte zu klein.

So dürfte es funktionieren:
Code: [AUSKLAPPEN]
ResizeBank(newbank,sizeof+1)


Mfg
Willi Smile

Edit: Das ist Quatsch was hier steht^^ Laughing
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage
  • Zuletzt bearbeitet von Willi die Rübe am So, Jul 20, 2008 23:13, insgesamt einmal bearbeitet

the FR3AK

BeitragSo, Jul 20, 2008 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Leider nicht...kommt immernoch der gleiche Fehler...

trotzdem Danke

Willi die Rübe

BeitragSo, Jul 20, 2008 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Achso ja, hab den richtigen Fehler gefunden. Der Startparameter bei ReadBytes ist für die Bank, nicht für die Datei. So müsste es funktionieren:

Code: [AUSKLAPPEN]
SeekFile archfile, curpos
ReadBytes(newbank,archfile,0,sizeof) ;auslesen ab der position in der Datei


Mfg
Willi
Ich habe keine Lösung, aber ich bewundere das Problem.
Tehadon
Q6600, MSI Neo2-FR, 4GB Ram, nVidia 7800 GTX

At the Farewell Party visit: MySpace | Homepage

the FR3AK

BeitragSo, Jul 20, 2008 23:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah danke! Funktioniert jetzt perfekt...und schnell Razz

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group