Binär-File auslesen



  • Ich habe Probleme beim Auslesen eines Binärfiles.
    File Inhalt z.B.:
    02 00 00 04 00 00 FA 10 20 00 00 F0 usw.

    Ich habe folgenden Code gefunden, im UpdateBuffer stehen aber teilweise andere Zeichen. Was mache ich falsch, was muss ich beachten?
    Wie muss der Zwischenspeicher (UpdateBuffer) aussehen?
    Ich habe im Netz ganz viel über Dateioperationen gefunden, aber kaum etwas über Binär-Dateien.
    (Diese Daten sollen über einen CAN-Bus für ein Software-Update übertragen werden).

    int iFileHandle;
    	int iFileLength;
    	int iBytesRead;
    	char *pszBuffer;
    	char UpdateBuffer[300];
    
    		iFileHandle = FileOpen(OpenTextFileDialog->FileName, fmOpenRead);  // Handle ermitteln
    		iFileLength = FileSeek(iFileHandle,0,2); // Länge ermitteln
    		FileSeek(iFileHandle,0,0);  // File auf Anfang
    
    		pszBuffer = new char[iFileLength+1];
    		iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
    		FileClose(iFileHandle);
    		for (i=0 ;i < iBytesRead; i++)
    		{
    			UpdateBuffer[i] = pszBuffer[i];
    		}
    		delete [] pszBuffer;
    


  • Hallo

    ich sehe in deinem Code-Auszug erstmal keinen Fehler, der falsche Zeichen verursachen könnte. Benutz den Debugger um das Laufzeit-Verhalten zu verfolgen.

    Du solltest allerdings überlegen was passiert wenn FileLength > 299 ist.
    Für das Kopieren zwischen zwei linearen Speicherbereichen kannst du statt der For-Schleife auch memcopy benutzen.
    Wenn du es richtig machen willst dann übergehst du das statische Array gleich ganz und arbeitest immer nur mit dem dynamischen char*, oder noch besser einen std::vector<char>.

    bis bald
    akari


Anmelden zum Antworten