[fpc-devel] Reading empty collection from stream
Marc Weustink
marc.weustink at cuperus.nl
Thu Sep 7 11:19:24 CEST 2006
Vincent Snijders wrote:
> Hi,
>
> I am investigating Lazarus issue 7305. The TSynEdit class has a
> KeyStrokes property of the type TSynEditKeyStrokes, which is a
> TCollection descendant. The TSynEdit constructor fills the collection
> with some default items. If I remove the items and stream the TSynEdit,
> the following line is shown in the lfm:
> Keystrokes = <>
>
> If I read this lfm, I don't get a empty KeyStrokes collection, but one
> filled with the default value.
>
> I suspect the following lines in TReader.ReadCollection cause this
> behaviour:
> if not EndOfList then
> Collection.Clear;
>
> Is this a bug or by design? How do I load an empty collection from a
> stream, if the collection has a default value?
Delphi has the same construction, which is IMO a design flaw.
IMO when a collection is "default" is shouldn't be streamed, so there
would be nothing written.
I don't know why it is there, since when a "default" collection is
written, all elements are written. So it never will be <>.
> Note, if I remove the 'Keystrokes = <>' line from the lfm, I will get
> the default collection too, so I wonder why there are two ways to get
> the default collection.
I propose to remove the "if not EndOfList then Collection.Clear;" line.
Marc
More information about the fpc-devel
mailing list