Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcje + fstream - problem.

Ostatnio zmodyfikowano 2009-04-26 14:20
Autor Wiadomość
malan
Temat założony przez niniejszego użytkownika
Funkcje + fstream - problem.
» 2009-04-26 03:10:02
Witam...
Mam sobie taką funkcję:

C/C++
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:

C/C++
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...
P-6020
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().
P-6031
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:
C/C++
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();
}

C/C++
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();
} // /if(PlikOdp[0]==84||PlikOdp[0]==116)
Teraz kod działa. Nawet lepiej niż się spodziewałem ;). Dzięki.

P-6044
« 1 »
  Strona 1 z 1