[Lazarus] EXC_BAD_ACCESS, Could not access memory

Hans-Peter Diettrich DrDiettrich1 at aol.com
Fri Apr 24 19:56:50 CEST 2009


Roland Turcan schrieb:

> BB> How is HeaderLen declared ?
> 
> Stream.Read (HeaderLen, SIZEOF (HeaderLen));
> 
> where information header's length is stored into binary.

The you should verify that HeaderLen <= SizeOf(FHeader), before
   Stream.Read (FHeader, HeaderLen);

Otherwise this statement will overwrite the following FItem data, with 
the fatal consequences you already experienced.

When a header will ever change in size (or structure), it's wise to 
store a version number in the data files. Then you can read the stored 
header data into the exactly applicable header type (record), and 
convert that record into the current THeader definition, field by field.

DoDi




More information about the Lazarus mailing list