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

Problem z otwieraniem plikow binarnych

Ostatnio zmodyfikowano 2013-11-20 22:15
Autor Wiadomość
Mr.J
Temat założony przez niniejszego użytkownika
Problem z otwieraniem plikow binarnych
» 2013-11-20 22:15:01
Witam
Od paru dni glowie sie nad pewnym problemem, mam takie dwa fragmenty kodu:

Pierwszy sluzy do wczytania fragmentu pliku z mapa, ktory zawiera podstawowe dane i tutaj wszystko dziala jak nalezy.
C/C++
int MapManager::load_map( std::string mapName )
{
    int dataSize = 0;
    int mapNameSize = 0;
   
    std::ifstream fin;
    //---------------WCZYTYWANIE PODSTAWOWYCH INFORMACJI O MAPIE-----------------//
    fin.open(( "Maps/" + mapName + ".Pg" ).c_str(), std::ios::binary );
    if( !fin )
         return - 1;
   
    fin.read(( char * ) & dataSize, sizeof( dataSize ) );
    fin.read(( char * ) & mapNameSize, sizeof( mapNameSize ) );
    fin.read(( char * ) & mapName, mapNameSize );
    fin.read(( char * ) & number_of_x_sectors, sizeof( number_of_x_sectors ) );
    fin.read(( char * ) & number_of_y_sectors, sizeof( number_of_y_sectors ) );
    fin.read(( char * ) & number_of_players, sizeof( number_of_players ) );
   
    fin.close();
   
    std::ofstream test;
    test.open( "test zarzadzania mapa.txt" );
    test << mapName;
    test << "\n";
    test << number_of_x_sectors;
    test << "\n";
    test << number_of_y_sectors;
    test << "\n";
    test << number_of_players;
    test.close();
   
    return 0;
}

Drugi nastepuje niemal od razu po pierwszym i wylapalem ze znajduje sie w miejscu gdzie ucialem kod, mapIn.fail() zwraca true (bad(), eof() zwracaja false) 
C/C++
/////////////////////////////////////////
int MapManager::load_sector( int sector_x, int sector_y, int offset_x, int offset_y ) //*****
{
    check_error( "test001.txt" );
    //---------------------------OCZYSZCZANIE SLOTOW NA OBIEKTY---------------------------//
    SDL_Chain newChain = { '0', '0', '0', '0', '0', '0', '0', '0' };
    for( int iPlane = 0; iPlane < 2; iPlane++ )
    {
        for( int i = offset_y; i < offset_y + TILES_PER_SECTOR; i++ )
        {
            for( int j = offset_x; j < offset_x + TILES_PER_SECTOR; j++ )
            {
                objSlot[ iPlane ][ i ][ j ].pop_object();
                objSlot[ iPlane ][ i ][ j ].set_occupied( false );
                objSlot[ iPlane ][ i ][ j ].set_event( EMPTY );
                objSlot[ iPlane ][ i ][ j ].set_chain( newChain );
                objSlot[ iPlane ][ i ][ j ].set_checked( false );
            }
        }
    }
    if( sector_x >= 0 && sector_x < number_of_x_sectors
    && sector_y >= 0 && sector_y < number_of_y_sectors )
    {
        long length = 0;
        long g_possition = 0;
       
        //-------------OTWIERANIE MAPY DO ODCZYTU-------------//
        std::ifstream mapIn;
        mapIn.open(( "Maps/" + mapName + ".Pg" ).c_str(), std::ios::binary );
        mapIn.seekg( 0, mapIn.beg );
        if( !mapIn ) // <-------------tu jest jakis blad*****
        {
            //...

Zupelnie nie rozumiem czemu tak sie dzieje jako ze sciezka do pliku jest w obydwu miejscach taka sama ...  ;(

Ehhh... po raz kolejny kiedy postanawiam napisac jakis problem na tym forum znajduje rozwiazanie po wyslaniu posta xD... okazalo sie ze nazwa argumentu w metodzie load_map byla taka sama jak zmiennej przechowujacej
nazwe mapy dlatego zapisywalem do pliku pusty strumien...
P-96867
« 1 »
  Strona 1 z 1