Тип Сardinal на самом деле не поддерживается
Тип Cardinal на самом деле является Integer и не поддерживает значения больше чем High(Integer).
Дело усугубляется тем, что Cardinal является как бы встроеным типом, и его невозможно переопределить например как fvtVariant.
Это может быть проблемой как при сравнении или арифметических операциях, так и при возврате значений функций типа timeGetTime или которые возвращают THandle.
Вот такой вот тестовый скрипт.
var c:Cardinal;
begin
c:=$FFFFFFFF;
ShowMessage(IntToStr(c));
end.
Если его запускать с дебагом, то он выдаст ERangeError. Если же без дебага, то тихо умрёт. До ShowMessage дело не дойдёт в любом случае.
Варианты решения
1) Сделать честный Cardinal
2) Унаследовать его от fvtVariant
3) Вообще удалить, чтобы пользователь если ему надо сам добавил на базе чего угодно.