Ich bin gerade dabei einen kleinen(!) savegameeditor zu schreiben. Leider habe ich jetzt ein Problem mit fstreams. Ich müsste eben eine Binärdatei an einer Selle überschreiben. Das laden von einer bestimmten Stelle geht schon mal ganz gut, aber das schreibne nicht.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
//laden
File.seekg(0x54 , std::ios::beg);
File.read((char*)&iBuffer, 4);
Buffer.str("");
Buffer << iBuffer;
//schreiben
Buffer.str("");
Buffer << Punkte->text();
Buffer >> iBuffer;
File.seekp(0x54, std::ios::beg);
File.write((char*)&iBuffer, 4);
|
File ist ein fstream, Buffer ein Stringstream, iBuffer ein Integer, Punkte ein Eingabefeld, in dem die neuen Punkte eingegeben werdne sollen.
Das Problem beim Schreiben ist, dass entweder die Datei komplett überschrieben wird (d.h. sie enthält nur dort, wo ich etwas neues Schreibe die entsprechenden Werte, alles davor ist 0, alles was dahinter hätte stehen sollen ist einfach nciht mehr da) oder es wird unabhängig von der Position alles einfach nur hinten dran gehängt.
Die Datei komplett in den Hauptspeicher lesen und dann wiederkomplett schreiben wollte ich möglichst verhindern.
Ich habe quasi schon alle Ladeparameter ausprobiert, die man bei open so angebne kann, es trat immer einer der beidne Effekte auf :-(
Achja, hier die Originalfrage, im JLI Fourm: http://www.jliforum.de/board/viewtopic.php?t=5140