ďťż

Ładny brzuch

Robię aplikację z wykorzystaniem operacji na plikach i dzieją się szalenie dziwne rzeczy. Oto moja funkcja do wczytywania plików:

void __fastcall TForm1::OtworzClick(TObject *Sender) { if(Otwarcie->Execute()==True){ if(in.is_open()) in.close(); nazwa_pliku=Otwarcie->FileName; ShowMessage(nazwa_pliku); in.open(nazwa_pliku.c_str()); in.seekg(0,ios::beg); Nazwa_pliku->Caption=nazwa_pliku; if(in) ShowMessage("OK"); if(in.eof()) ShowMessage("Koniec pliku"); } }

Gdy wczytuje pierwszy plik jest zawsze dobrze. Gdy wczytuje inne pliki zanim wykonam operację odczytu całego pliku też jest dobrze. Tylko kiedy chcę wczytać drugi plik, wskaźnik jest z niewiadomych przyczyn na końcu pliku. Pierwszy warunek gwarantuje mi, że nie otworzę nowego pliku, zanim nie zamknę poprzedniego. Zmienna in jest typu ifstream, a dla tego typu domyślnie wskaźnik ustawia się na początku pliku. Aby nie było wątpliwości dałem seekg. Jednak jeśli otworze nowy plik po zakończeniu operacji na poprzednim, pojawia siękomunikat Koniec pliku, czyli warunek if(in.eof()) ShowMessage("Koniec pliku"); ma wartość TRUE, a warunek if(in) ShowMessage("OK"); ma wartość FALSE (komunikat się nie pojawia). Czy wiecie co jest nie tak?

Byłbym bardzo wdzięczny za pomoc.



A czy aby na pewno w tym drugim pliku coś jest? Może po prostu jest pusty...

Kiedy drugi raz ponownie otwieram ten sam plik najpierw jest dobrze, a po ponownym otwarciu źle, a więc ten sam plik na pewno nie mógł się nagle zrobić pusty.

Może coś jest źle przy zamykaniu pliku - sprawdzaj każdy krok.
Otwierasz plik aby otworzyć i zamknąć? ;p chyba wykonujesz jakieś operacje...

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •