Fout bij lezen van bestand | slaat regel over

Status
Niet open voor verdere reacties.

Xabre

Gebruiker
Lid geworden
22 sep 2007
Berichten
55
hoi,

Ik heb een database systeem gemaakt, maar nu gebeurd er iets heel vreemd tijdens het inladen van gegevens van de hdd. Er is een bestand, "klanten" dat ingeladen word en op een bepaalde regel skipt gy deze en de volgende regel. Heb ik iets verkeerd gedaan met geheugen allocaties? Of overschrijven van iets? Het gekke is dat het enkel dit bestand dat dit doet, en telkens op dezelfde regel!

Code:
	ifstream DBfile;
        ifstream TBfile;

        ROW BufferRow;
        CELL BufferCel;

        AnsiString file;

        bool EOCH = false;

        char *BUF;

        mkdir( Name.c_str() );
        DBfile.open( (Name + "/header.db").c_str() );
        DBfile.seekg(0);

        while( !DBfile.eof() && !DBfile.fail() )
        {
               BUF=new char[512];
               DBfile.getline( BUF, 512);
               string strBuf = BUF;
               delete BUF;
               
               if( strBuf != "" )
               {                   
                   vector <string> vBuf;                   
                   vBuf = Explode(strBuf,";");              
                   
                   if( vBuf.size() > 0 )
                   {
                       AddTable( vBuf.at(0), atoi( (char *)vBuf.at(1).c_str() ) );
                   }
                   else
                   {
                       AddTable( vBuf.at(0), 0);
                   }
               }
        }

        DBfile.close();

        for( int i = 0;i < Tables.size();i++ )
        {
             file = "DB\\Klanten";//(char *)( Name +  "/" + Tables.at( i ).Name).c_str();
             TBfile.clear();
             TBfile.open( file.c_str(),fstream::in );
             
             int cols = 0;

             if( TBfile.fail() )
             {
                MessageBox(NULL, ("Can't open : " + Name +  "/" + Tables.at( i ).Name + ":" + _sys_errlist[errno]).c_str(), "HEADER", MB_ICONERROR | MB_OK );
             }

             Tables.at( i ).vRows.push_back( BufferRow );
             cols = 0;
             EOCH = false;
             for( ;!TBfile.eof() && !TBfile.fail(); )
             {
                    BUF= new char[512];
                    TBfile.getline( BUF,512 );
                    string smBuffer = BUF;
                    delete BUF;
                    
                    if( smBuffer != "EOCH" && EOCH == false )
                    {   
                        Tables.at( i ).AddCol( smBuffer,0 );
                        MessageBox(NULL, ((AnsiString)Tables.at( i ).vColumns.size() ).c_str(), "INHOUD", MB_ICONERROR | MB_OK );
                    }
                    else
                    {                           
                        if( EOCH )
                        {
                               Tables.at( i ).vRows.back().vCells.push_back( BufferCel );
                               Tables.at( i ).vRows.back().vCells.back().Value = smBuffer;
                           	// Ier loop et ergens mis, ie moe normaal een regel lezen, maar ie sla em altijf over, zelfs meteen na de buffer
                                
                           if( Tables.at( i ).vRows.back().vCells.size() == Tables.at( i ).vColumns.size() )
                           {
                               Tables.at( i ).vRows.push_back( BufferRow );
                           }                     
                        }                        
                        else if( EOCH == false )
                            EOCH = true;
                    }
             }  
             
             TBfile.close();
        }
        
        return true;

klanten-bestand
Code:
ID
Naam
Adres
E-Mail
BTW
Telefoon
GSM
EOCH
5
Arend Lapere
0
1
BE     .   .   
    /         
     /
 
Het is al in orde,
Heb het ingelezen via getline( file_handle, string) werkt een stukje beter!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan