problem eine Datei 2 mal auszulesen

stefano86

Grünschnabel
Hallo zusammen,

ich habe ein Problem, Dateien mehrmals nacheinander zu öffnen.
Die Funktionalität, wie eine Datei geöffnet wird ist mir klar.

Ich habe ein Hauptmenu über das ich z.b eine datei auswähle und diese auslese und überprüfe.
Beim ersten mal funktioniert alles wunderbar.
Datei wird geöffnet,Zeilen gezählt, danach wieder geschlossen.
Nun folgt unabhängige Funktionalität und danach wird diese Datei wieder geöffnet, abgearbeitet und wieder geschlossen.

Wenn ich nun ins Hauptmenü zurückkehre und den Vorgang noch einmal beginnen möchte, kann er die Datei nicht auslesen. Die Datei wird gefunden, geöffnet, aber eben nicht gelesen.

Da ich vermutet habe, dass aus dem ersten Durchgang irgendwelche statusbits o.Ä. nach erfolgreichem lesen gesetzt wurden, habe ich es auch mit ifstream.clear() und seekg (zurückl an anfang) probiert ohne erfolg. Vielleicht weiß jemand von euch, der damit schon mehr Erfahrung hat, woran es liegen könnte.

Quellcode Dateiaufruf:
Code:
int        zeilenanzahl    = 0;
char          *path              = new char[pathToOpenFile.size()+1];
char          *pinput;
char          input[50];
string        puffinput;

strncpy(path, pathToOpenFile.data(), pathToOpenFile.size());
path[pathToOpenFile.size()]    = '\0';

ifstream dateitemp;
if(File::Exists(path) == true)
{
MessageBox(NULL,"datei existiert","prüfung",0);
dateitemp.open(path);
if(!dateitemp || dateitemp.is_open() == false)
{
MessageBox(NULL,"datei nicht öffnen können","stat",0);
}
else
{
dateitemp.clear();
dateitemp.seekg(static_cast<streamoff>(0),ios::beg);             
//bei 2.mal aufruf aus dem Hauptmenu geht er bis hier her und nicht mehr durch die //whileschleife
while(dateitemp.getline(input, 50))
{
pinput  = input;
pufInput.clear();
puffInput    = pinput;
if(puffInput[0] == ':' && pufInput.length() > 8)
{
if(puffInput[8] != '4' && puffInput[8] != '1')
{
zeilenanzahl = zeilenanzahl + 1;
}        
}
dateitemp.close();
}
}
}
else
{
MessageBox(NULL,"Datei ungueltig","stat",0);
}
......
später noch mal "ifstream".open()-aufruf ( identischer vorgang, nur andere abarbeitung ).
[ zum zweiten aufruf: ich muss ihn später machen, ich kann ihn nicht zum ersten Aufruf hinzufügen! ]

Ich bedank mich schon im Voraus über Hilfestellung oder Denkanstöße !
Gruß, Stefano
 
Zuletzt bearbeitet:
hallo,

vielen Dank für die Blitzschnelle Antwort :)

kannst du mir erklären wie man code-tags macht? du siehst ich bin neu auf dem board.

Fehlermeldungen bekomme ich keine.

Das Programm läuft ja auch.
Nur beim ersten Durchgang bekomme ich die richtige Zeilenanzahl.
Beim zweiten mal ist zeilenanzahl = 0.
Es liegt aber nicht an der if-Abfrage sondern weil er überhaupt nicht in die while schleife geht.(Dateien sind ja identisch und ändern sich nicht)
ich hab auch entsprechend mit MessageBoxes versucht dem "Fehler"auf die schliche zu kommen, aber Pfad ist korrekt.

Gruß, stefano
 
Zuletzt bearbeitet:
bist du schonmal mim debugger durch deinen Code durchgegangen? ich glaube da wirst du den Fehler am einfachsten finden...

Code Tags:
[ CODE ] deincode [ /CODE ] (<- das ganze natürlich ohne leerzeichen ;D)

was dann so aussieht:
Code:
deincode

Grüße, random.
 
hallo,

im moment Kann ich nicht auf den Debugger zurückgreifen.
Der macht zur zeit noch probleme weil ich eine DLL mit einbinde und sich das noch nicht verträgt(beim starten des Debuggers erhalt ich ab dem ersten Funktionsaufruf einen Fehler) das Compilieren und exe ausführen funktioniert jedoch :confused:
hat mit diesem Problem jedoch jetzt nichts zu tun.

Aber daher wollt ich mich hier an Erfahrene wenden, die vielleicht hierzu eine Antwort haben.
ich kann mir schon vorstellen dass es irgendwas mit den statusbits zu tun hat.
setze ich das clear() richtig? ist das seekg wirklich notwendig?

Gruß Stefano
 
Zurück