[DUG] Reading Different Types from a Binary File

Paul Heinz paul at accredo.co.nz
Mon Nov 5 09:24:28 NZDT 2012

Hi Eric


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
Windows API.





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
word types
- 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 form:


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...
URL: http://listserver.123.net.nz/pipermail/delphi/attachments/20121105/702015b0/attachment.html 

More information about the Delphi mailing list