[GELÖST] Dateiausleseproblem?
Übersicht BlitzMax, BlitzMax NG
 BlitzMax, BlitzMax NG  Beginners-Corner
 Beginners-Corner| CO2ehemals "SirMO"Betreff: [GELÖST] Dateiausleseproblem? |  Sa, Aug 13, 2011 19:10 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:  Eine Schleifen machen, die den Dateinamen sucht und eine variable erhöht, die später als sprungvariable benutzt wird, danach stream schließen und mit neuer variable wieder öffnen, um dann mit seekstream() und der variablen, die eben erhöht wurde an die entsprechende stelle zu springen, ergebnis: Error oder die Datei wurde falsch ausgelesen 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 |  Sa, Aug 13, 2011 20:49 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 |  Sa, Aug 13, 2011 21:17 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" |  So, Aug 14, 2011 3:20 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 |  So, Aug 14, 2011 3:33 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" |  So, Aug 14, 2011 3:45 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
 BlitzMax, BlitzMax NG
 BlitzMax, BlitzMax NG  Beginners-Corner
 Beginners-Corner
					Powered by phpBB © 2001 - 2006, phpBB Group
				



