Filepointer verschwindet BITTE Hilfe
-
Hallo, ich weiß ich werden langsam lästig, aber ich habe ein echt blödes Problem.
Also.
Ich habe eine Klasse:class Rfile{ private: ifstream is; string zeile; char err_text[80]; public: char *file_r(int nr); void file_open(void); void file_close(void); };Und habe für diese GLOBAL eine Instanz angelegt:
Rfile mf;Die Elementfunktionen:
char* Rfile::file_r(int nr) { if(is.good()) { is.seekg(nr*80,ios::beg); is.getline(err_text,80); return err_text; }else { MessageBox(NULL,"kann nicht öffnen", "", MB_OK | MB_ICONERROR); return "Kann Sprachdatei nicht lesen!"; } } void Rfile::file_open() { char pfad[255]; strcpy(pfad, www_path); strcat(pfad,ERRORTEXTSLB); is.open(pfad,ios::in); if(is.good()) { } else { FKT_errorlog("Not able to read the language File",1); FKT_getlast("Languagefile"); throw("Not able to open the language File"); } } void Rfile::file_close() { is.close(); }Der Aufruf der Lese Funktion:
mf.file_r(102);Die Zahl (102) ändert sich natürlich bei jedem Aurfuf,da dies mit 80 multipliziert wird und ich habe meine exakte position des Textes in der Datei.
Das Ganze funktioniert wunderbar.
Aber eben nur einmal.Bei 1. Mal wird der Text ausgelesen wie es sein soll.
Beim X-ten mal nicht.
Die Abfrage is.good scheitert, was bedeutet, daß der itstream is nicht mehr korrekt ist.
Nur wo ist er?
Ich habe das good() auch schon weggelassen und auch sonst alles mögliche versucht, immer dasselbe.
Selbst wennich nur testweise am Anfang des Programmes zweimal einen Text abrufen will gehts nur beim 1. Mal.Wo ist meine ifstream hin?
Kann mir das jemand sagen?
Ist meine Klasse/Methode falsch?Die Datei ist noch definitiv geöffnet, ich kann sie nämlich nicht löschen/ändern.
Ich hoffe Ihr könnt mir helfen, da es ein dringendes Problem ist.
Danke MOndmann
-
Hi,
mal als kleinen Hinweis (weiß nicht, ob das die Ursache ist): eof() => !good().
Vielleicht bist Du einfach am Ende Deines Files angekommen ? Wenn das der Fall ist, musst Du mit clear() erst das eof-Bit löschen, bevor Du weiterarbeiten kannst.
Gruß,
Simon2.
-
ja du hattest recht, genau das wars...vielen Dank Grüße Mondmann