i:=TItem.Create;
i.Text = IntToHex(integer(@i),8);
d.ItemList.add(i);
Objekt-Variablen sind bereits Pointer die auf das Objekt verweisen, deshalb ermittelt @i die lokale Adresse der Variablen i, nicht wie gewünscht die Adresse des Objekt im Speicher.
i.Text = IntToHex(Integer(Pointer(i)), 8);