Agreed, this is one of the weird Delphi misfeatures...
In later SynEdit versions I implemented custom streameing functions which only store the "diff" from default keystrokes (i.e. the removed and added keystrokes compared to the default list). -Flávio On 9/7/06, Marc Weustink <[EMAIL PROTECTED]> wrote:
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
_______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel