Funkcje + fstream - problem.
Ostatnio zmodyfikowano 2009-04-26 14:20
| malan Temat założony przez niniejszego użytkownika | Funkcje + fstream - problem. » 2009-04-26 03:10:02 Witam...  Mam sobie taką funkcję: void WyswietlRanking( string Menu, fstream & PliK, string Dane ){
 clrscr();
 Menu = " Ranking ";
 WyswietlMenu( Menu );
 PliK.open( "Ranking.txt", ios::in );
 if( PliK.good() )
 {
 for( int i = 5; !PliK.eof(); i++ )
 {
 getline( PliK, Dane );
 gotoxy( 1, i );
 cout << Dane << endl;
 }
 } else
 {
 cout << "\n\n[04] - Blad otwarcia pliku ''Ranking.txt''!" << endl;
 }
 getch();
 return;
 }
Następnie chciałbym zapisać coś do tego samego pliku: Plik2.open( "Ranking.txt", ios::out );if( Plik2.good() )
 {
 Plik2 << Data << " " << Imie << " wygral: " << GKwoty( NumerPytania ) << " zl" << endl;
 } else
 {
 cout << "\n\n[03] - Blad otwarcia pliku ''Ranking.txt''!" << endl;
 getch();
 return( 0 );
 }
Problem polega na tym, iż kiedy chcę wyświetlić ranking więcej niż 1 raz wyskakuje błąd [04]... Również kiedy chcę zapisać wyskakuje błąd [03]... i nie mam pojęcia dlaczego... Wiem, że każdy plik powinno się zamknąć ( Plik.close(); ), ale to nie działa. Nie daje żadnego efektu... | 
|  | 
| DejaVu | » 2009-04-26 12:13:02 Ja w kodzie nie widzę PliK.close(). Nie wiem czy można otworzyć plik do zapisu, który masz otwarty do odczytu.
 /edit:
 Jeśli wykorzystujesz ten sam fstream do kilkukrotnego uzyskiwania dostępu do pliku to powinieneś dawać przed każdym ponownym otwarciem PliK.clear().
 | 
|  | 
| malan Temat założony przez niniejszego użytkownika | » 2009-04-26 14:20:35 Plik.clear() - tego akurat nie znałem ;p Poprawiony kod: void WyswietlRanking( string Menu, fstream & DowolnyPlik, string Dane ){
 clrscr();
 Menu = " Ranking ";
 WyswietlMenu( Menu );
 DowolnyPlik.open( "Ranking.txt", ios::in | ios::out );
 if( DowolnyPlik.good() )
 {
 for( int i = 5; !DowolnyPlik.eof(); i++ )
 {
 getline( DowolnyPlik, Dane );
 gotoxy( 1, i );
 cout << Dane << endl;
 }
 } else
 {
 cout << "\n\n[04] - Blad otwarcia pliku ''Ranking.txt''!" << endl;
 }
 DowolnyPlik.close();
 DowolnyPlik.clear();
 getch();
 }
if( PlikOdp[ 0 ] == 84 || PlikOdp[ 0 ] == 116 ){
 cout << "Podaj date: ";
 cin >> Data;
 Plik2.open( "Ranking.txt", ios::app | ios::out );
 if( Plik2.good() )
 {
 Plik2 << Data << " " << Imie << " wygral: " << GKwoty( NumerPytania ) << " zl" << endl;
 Plik2.close();
 } else
 {
 cout << "\n\n[03] - Blad otwarcia pliku ''Ranking.txt''!" << endl;
 getch();
 }
 } else
 {
 Plik2.close();
 }
 
Teraz kod działa. Nawet lepiej niż się spodziewałem ;). Dzięki.  | 
|  | 
| « 1 » |