[GELÖST] Dateiausleseproblem?
Übersicht

CO2ehemals "SirMO"Betreff: [GELÖST] Dateiausleseproblem? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich habe folgenden Code: BlitzMax: [AUSKLAPPEN] Function LoadPackage(PackageFilePath:String, FileToBeDepackagedPath:String, extractto:String) 'FUNKTIONIERT er ist das gegenstück von diesem Code: BlitzMax: [AUSKLAPPEN] Function SavePackage(PackageFilePath:String, FileToBePackagedPath:String) 'FUNKTIONIERT!. Nun habe ich folgendes Problem: Wenn ich 3 Dateien mit SavePackage() in eine Datei zusammenfasse, und dann mit LoadPackage() die 1. datei auslesen will, ließt er die 2. Datei aus. Wenn ich die 2. Datei auslesen möchte, ließt er die 3. aus, Wenn ich die 3. auslesen will, gibts einen Error. D.h. Die Dateiname-Suchfunktion in der LoadPackage() funktion ist fehlerhaft und stoppt den suchvorgang erst exakt eine Datei nach der erforderten. Ich habe schon folgendes Probiert um das Problem zu beheben: ![]() Nun könnte ich mir noch vorstellen, das ich einfach die größe der vorher ausgelesenen Datei auslese, und dann einfach die Anzahl an Bytes "zurückspringe", dabei weiß ich allerdings nicht, ob es einen solchen befehl gibt, der in einer datei Bytes zurückgehen kann. ich hoffe ihr könnt mir helfen, mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
- Zuletzt bearbeitet von CO2 am So, Aug 14, 2011 3:45, insgesamt einmal bearbeitet
![]() |
kittomer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bin gerade nicht so ganz auf der höhe, aber so wie's aussieht, passiert das deswegen, weil du das mit Repeat...Until machst, da die Kondition "PackageName = FileToBeDepackagedPath" erst am ende der Schleife geprüft wird, und da bist du dann schon über die Daten des ersten Files drüber gerollt. | ||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe dazu drei Fragen:
Wieso liest du den die gepackte Datei zweimal in der Load-Routine? Was steckt hiner der Routine ReadString2() ??? Ist der Code komplett von dir, oder aus einem Code-Archiv? |
||
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ kittomer: Das ist das Problem, was ich die ganze zeit zu lösen versuche ![]() @ Midimaster: Der Grundcode ist von mir, verbessert wurde er von diversen (man verzeihe mir, das ich mir den namen nicht merken kann) leuten hier im forum verbessert, um danach von mir modifiziert zu werden ![]() Readstring2() ist einfach die übersetzte funktion zu BMax aus BB (ReadString()), das musste ich umschreiben, da es in BMax nicht die selbe funktion gibt wie in BB (bzw. sie macht nicht das selbe, wie die in BB). Das war jedoch das Problem bei dem Programm, für den diese Funktionen gedacht waren, theoretisch könnte man ReadString2() durch das ReadString() aus BMax ersetzen ![]() Zitat: Wieso liest du den die gepackte Datei zweimal in der Load-Routine? Wie meinst du das??
|
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
also, was ich da sehe ist, dass nach dem ersten REPEAT nicht nur die Header-Dateien eingelesen werden, sondern auch noch die Daten mit der 2. REPEAT-Schleife
Vielleicht check ich es ja nicht... aber danach steht doch der Filepointer schon hinter den Daten, oder? Dann kommt diese onimöse ReadString2(PackageFile), die scheinbar schon wieder Daten einliest und danach komt die Schreibroutine, die jetzt versucht, byteweise Daten aus dem noch immer geöffneten Package zu holen. Der Filepointer steht aber doch schon am Anfang des nächsten Abschnitts... Ich hab das mal was rausgelassen und einige Zeilen mit kommentaren versehen: BlitzMax: [AUSKLAPPEN] Function LoadPackage(PackageFilePath:String, FileToBeDepackagedPath:String, extractto:String) 'FUNKTIONIERT |
||
- Zuletzt bearbeitet von Midimaster am So, Aug 14, 2011 3:52, insgesamt 2-mal bearbeitet
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, habe das Problem nun gelöst! Hier die funktionierende Funktion:
BlitzMax: [AUSKLAPPEN] Function LoadPackage(PackageFilePath:String, FileToBeDepackagedPath:String, extractto:String) 'FUNKTIONIERT mfG, CO2 |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group