Hallo,
Ich versuche, in C++ einen fileparser zu schreiben, der binärdateien chunkweise liest. Dies ist völlig schiefgelaufen, und beim debuggen habe ich mir die Positionen des filepointers genauer angesehen:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
long p1 = str.tellp();
if (command == 0x07) // dem_stop
break;
int tick;
str.read((char*)&tick,4);
if (tick >= 0)TotalTicks = tick;
long p2 = str.tellp();
if((p2-p1)>4) cout << "Ich habe einfach mal entschieden, mehr als 4 bytes weiterzuspringen." << endl;
|
Und tatsächlich ist p2-p1 manchmal 5. Wie kommt das? Ich habe nicht einmal einen ansatz, das zu debuggen; Es passiert auch immer an der selben stelle in der datei.
|
C-/C++-Quelltext
|
1
|
str.seekp(p1-p2+4,ios::cur);
|
Hat das problem (teilweise) gelöst, jetzt springt er an einer anderen stelle ein byte weiter. Ich verstehe nur noch bahnhof; Was tun?
Ich habe auch schon recompiled, vs neu gestartet und meinen pc neu gestartet. Hat alles nichts gebracht. In einem anderen Fall, ist das programm nach endlich vielen schritten terminiert. Wenn ich allerdings str.tellp() aufgerufen habe, hat sich das programm in eine endlosschleife gefangen!? Ich kann gerne noch mehr code zeigen, aber der code oben ist 1:1 aus meinem code rauskopiert.
mfg CBenni::O