I don't like to use Variant type, but sometimes this is convenient type in web programming and when I use TStringList. In TStringList, I can save like
AStringList.Values['id'] := V;
V is Variant type, but is integer value here.
Also assignments like
I := V; // I is an integer-type variable, V is a variant type variable
works fine.
But
ShowMessageFmt('The value is %d', [V]);
raises error. Well specifying type of variant isn't a big deal, like:
ShowMessageFmt('The value is %d', [Integer(V)]);
but shouldn't variants be interpreted as "expected" type? It's not different from using StrToInt function, etc.