[Lazarus] pascal component stream

Mattias Gaertner nc-gaertnma at netcologne.de
Sun Jan 16 23:45:50 CET 2011


Hi,

Some users suggested, that components should be stored in pascal
source (optionally). 
IMO there is one big advantage:
Storing in source means no need for the streaming system at runtime,
which means no need for published properties/methods at runtime, which
would help smart linking to reduce the size of the executable. I have
not tested, but it should be quite a bit for the LCL.

The LCL and IDE uses the TWriter of the FCL, which has the ability to
write to various formats. There is already a rudimentary pascal writer
in lazarus/examples/pascalstream/componentstreampas.pas.

There are some issues left that must be solved before it can be used
in the IDE:
1. TCollection needs a typecast to the item class
2. forward dependencies
3. the 'with' can create conflicts
4. what to do with DefineProperties?
5. a reader

Point 1 should be solvable with a typecast.
Point 2 can be solved by first creating all components and then
assigning the properties.
Point 3 can be solved by using fully qualified identifiers.
Point 4 is the real problem. How to store TStrings.Data or TBitmap.Data?

You are welcome to solve the open issues. I will then help to use the
reader/writer in the IDE.

Mattias




More information about the Lazarus mailing list