wie genau funktioniert CFile::Seek()

OP #3680043
Lesenswert?

Hallo zusammen,

ich sitze hier gerade vor etwas Code von jemandem, der daran nicht mehr 
arbeiten wird. Leider steht er mir auch nicht mehr für Fragen zur 
Verfügung und jetzt muss ich mich so durchkämpfen.
Aktuell scheitere ich allerdings an dem Funktionsaufruf 
CFile::Seek(-1,2);
Ich habe eine Dokumentation gefunden, welche aller höchst wahrscheinlich 
dazu gehört:
http://msdn.microsoft.com/de-de/library/8c5ccz0x.aspx

So wie ich das Verstehe verschiebt die Funktion den Cursor um 2 Bytes 
richtung Anfang. Nun mein Problem ist jetzt aber, dass die Datei 
geöffnet wird [if ( !CFile::Open(...) ) ...], ein Byte gelesen wird 
[CFile::Read(&c,1)], dann dieses Byte geprüft und ggf. im Anschluss das 
CFile::Seek(-1,2); ausgeführt wird.
Wenn ich da jetzt richtig gerechnet habe, dann müsste der Cursor also 
auf -1 also noch ein Byte vor der Datei stehen, was natürlich Käse ist. 
Anscheinend hat diese Funktion aber nie Probleme gemacht, also muss ja 
irgendwas falsch sein an meiner Rechnung.

Stimmt ihr mir da zu oder kann mir jemand erklären wie dieses Seek 
wirklich funktioniert?

Vielen Dank
Leo
Gast #3680045
Lesenswert?

> So wie ich das Verstehe verschiebt die Funktion den Cursor um 2 Bytes
> richtung Anfang.

Ja. Aber beachte auch den zweiten Parameter (und haut dem Autor verbal 
eine rein, dass er nicht die dafür vorgesehenen Konstanten sondern eine 
Zahl genommen hat).
OP #3680046
Lesenswert?

Oh man, die Dokumantation sollte man schon lesen können...
die 2 im seek(-1,2) ist vermutlich CFile::current. Ich plans grad nicht 
das richtig aufzulösen, aber der Curser wird wohl von der Aktuellen 
Position aus um 1 nach links verschoben, was wieder der Anfang ist...

Fazit: Erst die Doku auf Englisch umschalten, dann lesen. Auf Deutsch 
steht da wirklich nur schrott.

Sorry für den Fehlalarm.
Gast #3680059
Lesenswert?

bluppdidupp schrieb:
> nach Seek(-1,CFile::end): 0

Allerdings könnte man das auch einfacher, sicherer und verständlicher 
erreichen. Aber ein C-Programmierer schreibt natürlich möglichst 
unverständlichen Code, damit ihn der Chef nicht lesen kann. War eben 
schon immer eine Write-Only-Programmiersprache.

Georg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren