[fpc-devel] Propose: change TComponent.Tag from longint to PtrInt
Michael Van Canneyt
michael at freepascal.org
Mon Sep 4 13:11:34 CEST 2006
On Mon, 4 Sep 2006, peter green wrote:
>
>>
>>> Me2.
>>>
>>> Just one disadvantage:
>>> The Tag is published.
>>> If someone stores a 64bit value and the component is stored,
>>> the stream can not be read under 32bit anymore.
>>
>> ...which makes it impossible to use streams for anything derived from
>> Tcomponent, which is really a lot. I don't think we should break this
>> feature to allow broken code to work.
> ahh the joys of conflicting requirements,
>
> I don't consider storing a pointer in the tag is broken code, it was
> considered the accepted way to maintain a pointer to your custom data from a
> standard control and there is often no simple alternative.
Accepted only because there was no other way.
The only correct way is to introduce an additional field 'UserData', of type
Pointer.
A pointer cannot be stored anyway at design-time, so it does not need to be
published.
Remains the decision where you introduce this pointer: TComponent, TControl.
IMHO, you should introduce TLCLComponent, add it there, and descend all
LCL components from that.
Michael.
More information about the fpc-devel
mailing list