[fpc-devel] Class field reordering
Martin Schreiber
mse00000 at gmail.com
Sun Jul 15 08:58:53 CEST 2012
On Saturday 14 July 2012 19:55:39 Sven Barth wrote:
> >
> > I sometimes need "cracker" classes in MSEide and MSEgui to fix bugs and
>
> make
>
> > extensinsions for FCL classes in order to access private fields (examples
> > TDataset, TParam, TField, TFiler, TReader, TWriter, TComponent).
> > Is it guaranteed that the local definitions have the same layout as the
> > definition in the FCL unit?
>
> Do you have current examples where you fixed bugs? Maybe these can be fixed
> at the source which might be better than making them protected (though this
> can still be done for non-bug fields where you need access to certain
> members)
>
MSEgui must work with current FPC release so sometimes it is necessary to make
workarounds until the next FPC release with the bugfixes. As soon as possible
I remove unneeded cracker classes.
I report all FPC bugs I find apart from the compiler crashes by partial
compile where reproducing is difficult, needs the whole MSEide+MSEgui source
and fixing probably would need construction of a new unit handling in FPC.
Bugs which are Delphi compatible are not reported also. ;-)
Currently I need access to the following private FCL class fields because of
MSEide+MSEgui extensions:
TComponent:
- FComponents
- FComponentState
- FFreeNotifies
TCollection:
- FItemClass
THandlestream:
- FHandle
TMemoryStream:
- FCapacity
TWriter:
- FPropPath
- FAncestors
TReader:
- FStream
- FLoaded
TDatabase:
- FConnected
TField:
- FValidating
- FValueBuffer
- FOffset
- FFieldno
TFielddef:
- FFieldno
TParam:
- FBound
TDataset:
- FDatasources
I hope I didn't forget anything. Suggestion:
For all FCL base classes which are used in different toolkits and which can't
be forked without breaking precompiled third party components, namely the
units classes and db, move *all* private fields and methods to protected and
mark them as "Use on your own risk, can be changed everytime! Don't cry
afterwards.".
I can not fork the listed components because of compatibility with third party
components. On the other had I forked SQLdb completely when the workaround
burden became too big.
Thanks, Martin
More information about the fpc-devel
mailing list