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
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel