[Lazarus] EXC_BAD_ACCESS, Could not access memory

Burkhard Carstens fpc at bcsoft.de
Fri Apr 24 15:27:30 CEST 2009


Am Freitag, 24. April 2009 15:11 schrieb dmitry boyarintsev:
> > Hm?
>
> TYPE TSomethingArr = ARRAY OF TSomeItem;
>
> declares a dynamic arrays. Dynamic arrays are implicit pointers, so
> should be used carefully in streaming operations.
>
> this should fix your problem:
>
> FUNCTION TMyObject.LoadFromStream (Stream:TStream):BOOLEAN;
> ...
>  SetLength (FItems, 0);
>  // make sure, that length of (FHeader) is greater than zero,
>  // otherwise it will cause another exception
>  Stream.Read (FHeader[0], HeaderLen);
>  SetLength (FItems, 0);
> END;

No, FHeader is just a record and not an array. IMO the provided code 
should work, assuming 
a) HeaderLen <= sizeof(TSomeHeader)
b) stream is a correctly initialized stream object
c) myObject is initialized correctly.

However, just a few more lines to make a complete and compilable example 
that shows the error would be nice ... 

regards
 Burkhard




More information about the Lazarus mailing list