Algorithm Math Delphi

Title: How to store an Object into an integer?
Question: I needed a place for my objects to be found, even when there is no other connection but a pointer.
Answer:
Sometimes you want to use your beloved, worldclass component, but it has no room for saving data anywhere. But to build a connection to that data you need is maybe to complex.
Here is an easy way to deal with it.
I had this project where i made a kind of graphical editor. I had to use Components and Objects that i could not alter. But i had to store my object-data somewhere into the interface, so i knew which object is selected and has to be dealt with.
I found a simple solution as i browsed through possible places in the component.
It had a property called "Tag", which almost every component has one of.
But how to get my object into this property.
Well, i did it by deriving and classtyping.
Imagine a component like this one:
-----------------------------------------
TSomeComponent = class
published
property Tag : integer read FTag write FTag;
end;
-----------------------------------------
...and you have an Object defined like this
-----------------------------------------
var
MyObject : TMyObjectClass;
-----------------------------------------
You can put your object into the tag like this:
-----------------------------------------
SomeComponent.Tag := Integer( Pointer(MyObject));
-----------------------------------------
Thats all.
If you have to lay hands on it again you have several possibilities.
You can simply typecast:
-----------------------------------------
TMyObject(Pointer(SomeComponent.Tag).Name := 'Peter';
-----------------------------------------
...or you could take a temporary variable inside a function for easier access:
-----------------------------------------
procedure DoSome(i : integer);
var
M : TMyObject;
begin
M := TMyOBject(Pointer(i));
Showmessage(M.Name);
end;
-----------------------------------------
You could even save different objects into your components.
To proof if you have the right object you can help yourself by
using the TOBject Class.
-----------------------------------------
function IsMyObject(i:integer):boolean;
begin
result := TObject(Pointer(i)).ClassName='TMyOBject';
end;
Thats all i wanted to tell for now.
have fun coding.
Nostromo