Es geht dem Threadersteller wohl um das Prinzip aufzuzeigen, wenn ich das richtig verstehe.
In diesem Fall würde ich eigene Datentypen Kreieren und als Stack eine TObjectList nehmen.
Delphi-Quellcode:
type TDataType =(dtObject, dtString, dtInteger, ....);
type
TBaseType = class
property Value: Pointer ....
property DataType: TDataType ....
end;