uses System.Variants,
System.Generics.Collections;
var
List: TList<Variant>;
Number: Variant;
begin
//no common numeric base type;
//Variant holds a number of any kind
List := TList<Variant>.Create;
List.Add(Byte(42));
List.Add(512); //Integer
List.Add(SmallInt(1024));
List.Add(Int64(777));
List.Add(3.14); //Double
for Number in List do
WriteLn(VarToStr(Number));
end.