Seek & Read



  • Hallo,

    ich habe ein kleines Problem: Ich lese die Datei bis '0x0A' kommt. Danach möchte ich das darauffolgende Zeichen lesen. Doch mit dem Lesen von dem nächsten Zeichen klappt's nicht.. (Das Programm liest noch immer '0x0A')

    // <------------ !?
    

    Vielleicht habt ihr eine Idee was an der Stelle nicht stimmt..

    LONG lActual = 0;
    LONG lPos = 0;
    
    	int nLaenge = file.GetLength();
    	file.Seek(0, CFile::begin);
    
    	for(int i = 0; i < nLaenge; i++)
    	{
    		lPos = file.GetPosition();
    		file.Read(cBuffer,1);
    
    		if(cBuffer[0] == 10) // LF, 0x0A
    		{
    		lActual = file.Seek( lPos++, CFile::begin );  // +1 vorwärts
    
    	         file.Read(cBuffer,1); // <------ !?
    
    			if(cBuffer[0] == 13) // CR, 0x0D
    			{
    			}
    
    		lActual = file.Seek( lPos--, CFile::begin ); // -1 rückwärts
    		}		
    //strDateiInhalt += cBuffer;
    }
    

    Merci



  • Hallo EdiRitter,
    Anmerkung im QuellCode. -Bernhard

    C/C++ Code:
    LONG lActual = 0;
    LONG lPos = 0;

    int nLaenge = file.GetLength();
    file.Seek(0, CFile::begin);

    for(int i = 0; i < nLaenge; i++)
    {
    lPos = file.GetPosition();
    file.Read(cBuffer,1);

    if(cBuffer[0] == 10) // LF, 0x0A
    {
    lActual = file.Seek( lPos++, CFile::begin ); // +1 vorwärts

    file.Read(cBuffer,1); // <------ !?

    if(cBuffer[0] == 13) // CR, 0x0D
    {
    }

    lActual = file.Seek( lPos--, CFile::begin ); // -1 rückwärts
    ' An dieser Stelle springst Du wieder auf die vorherige
    Position und somit auf den alten Wert. Lasse diese Zeile
    aus!

    }
    //strDateiInhalt += cBuffer;
    }



  • Hallo,

    du brauchst doch kein Seek, bei einem Read wird der interne Lese-Zeiger sowieso nach vorne bewegt:

    LONG lActual = 0;
    LONG lPos = 0;
    
        int nLaenge = file.GetLength();
        file.Seek(0, CFile::begin);
    
        for(int i = 0; i < nLaenge; i++)
        {
            file.Read(cBuffer,1);
    
            if(cBuffer[0] == 10) // LF, 0x0A
            {
    
                 file.Read(cBuffer,1); // <------ !?
    
                if(cBuffer[0] == 13) // CR, 0x0D
                {
                }
    
            }        
    //strDateiInhalt += cBuffer;
    }
    

    es sei denn, ich habe den Sinn des Codes noch nicht verstanden...

    MfG



  • ⚠ Jo, danke!


Anmelden zum Antworten