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:
Ich bedank mich schon im Voraus über Hilfestellung oder Denkanstöße !
Gruß, Stefano
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: