[fpc-devel] Propose: change TComponent.Tag from longint to PtrInt
Michael Van Canneyt
michael at freepascal.org
Wed Sep 6 11:05:51 CEST 2006
On Wed, 6 Sep 2006, Ale Katona wrote:
> The problem here is that if you introduce a changing type to Tag, you're
> going to break streaming of the components between various platforms.
> However I think simplest would be to simply make the tag something huge
> for years to come, like Int64.
> The idea with hidden union is nice tho. But you'll need to know how to
> stream it precisely and there's also endianness to take care of then.
I've been following the discussion, and the tag property will remain what
it is: a 32-bit integer. It was introduced by Delphi to mimic the Tag
property which exists in VB, to allow it to be used in case statements.
Changing it will probably cause more problems than it will solve.
Typecasting 'Tag' to a pointer is a non-portable, ugly hack and we should
not encourage such hacks.
If you want to store objects, use a TCollection, and store
TCollectionItem.ID in the component tag. ID is a unique identifier,
even when elements are added and removed from the collection.
Slightly more work, but clean and portable.
More information about the fpc-devel