[DUG] Reading Different Types from a Binary File
paul at accredo.co.nz
Mon Nov 5 09:24:28 NZDT 2012
I'd suggest using memory mapped files so you can just treat the entire
file contents as a block of memory and scan through it with normal
pointer operations. Look up CreateFileMapping and MapViewOfFile in the
From: delphi-bounces at listserver.123.net.nz
[mailto:delphi-bounces at listserver.123.net.nz] On Behalf Of Eric A
Sent: Monday, 5 November 2012 9:08 a.m.
To: Delphi ListServer
Subject: [DUG] Reading Different Types from a Binary File
This is probably a no-brainer to most of the DUG members, especially
those used to pointers ...
I need to read and extract data from a binary file which comprises:
- a header with character type strings, each terminated by CR LF (not
- binary data area with a mixture of byte types, word types and double
- a file terminator of 0xFFFF hex
The files are not huge, less than 500KB, as the structure originates
from old memory-constrained microprocessors of the 80's.
The header looks like it is based on the old INI file format and is of
The binary data area follows next. It comprises different types of data
blocks, with sub blocks, each of which contains either bytes, words or
double words of data in a pre-defined pattern or structure depending on
the type of data block.
I can read the file into a buffer (array of Char) but I currently have a
chunk of somewhat ugly code to parse the header and find the start
position of the binary data after the '[End] CR LF' string. After that
I need to extract data of various types depending on the specified
datablock types, which I though I might have to use pointers for.
What's the best approach for
a) Extracting the header strings - is there a Delphi function to extract
CR LF terminated character sequences as strings and maintain a pointer
to the end of the string?
b) Creating functions for ReadByte, ReadWord, ReadDoubleWord and
incrementing the pointer appropriately in each case ?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Delphi