Seite 1 von 1

Bfile_ReadFile-Problem

BeitragVerfasst: Do 16. Dez 2010, 18:06
von Paul94

Re: Bfile_ReadFile-Problem

BeitragVerfasst: Fr 17. Dez 2010, 09:46
von SimonLothar
Das Problem liegt offensichtlich bei Bfile_GetFileSize.

Bfile_GetFileSize gibt im Falle des main memories den physikalisch reservierten Bereich zurück.
Der unterscheidet sich von der logischen Dateigröße, die wieder für Bfile_ReadFile wichtig ist.
Du hast schon gemerkt, dass z. B. Bfile_CreateMainMemory immer einen Bereich von 24 Byte reserviert, obwohl die Datei logisch nur eine Größe von 4 hat!

Bfile_ReadFile hat damit ein Problem. Du holst mit Bfile_GetFileSize die physiklaische "Dateigröße" und versuchst dann mit Bfile_ReadFile über das logische Dateiende hinaus zu lesen.

Ich würd mal sagen: das ist ein Bug von Bfile_GetFileSize.

Ich meine, es gibt ein SysCall, um auch die logische Dateigöße im main memory zu ermitteln. Habe hier jetzt nicht alle Mittel, das genau zu beantworten. Heute Nachmittag schau ich mal nach.
Du kannst Dich natürlich auch von diesen Tücken unabhängig machen und die logische Dateigröße in das erste "int" Deiner Datei schreiben.

Achtung, noch ne Falle!

Die Sequenz

Bfile_CreateMainMemory
Bfile_OpenMainMemory
Bfile_WriteFile( fileHandle, buffer, size )
Bfile_ReadFile( fileHandle, buffer, size, 0 )

arbeitet nicht wie man denkt.

Bfile_ReadFile liest in diesem Fall nicht ab der Anfangsposition, sondern versucht da weiterzulesen, wo Bfile_WriteFile aufgehört hat zu schreiben! Das gibt wieder -2. Auch ein Bug, denn der vierte Parameter von Bfile_ReadFile funktioniert hier nicht wie dokumentiert.
Zwischen Bfile_WriteFile und Bfile_ReadFile muss man die Datei schließen und wieder öffnen.

Re: Bfile_ReadFile-Problem

BeitragVerfasst: Fr 17. Dez 2010, 14:54
von Paul94

Re: Bfile_ReadFile-Problem

BeitragVerfasst: Fr 17. Dez 2010, 18:13
von SimonLothar