Char
shortint или byte
smallint или word
smallint или word
single
string
single или real
На практике все это в настоящее время - анахронизм. Для целочисленных значений обычно используют integer, для вещественных - real.
Это позволяет во-первых, не загружать голову проблемой, что в какой-то момент результат операции не поместится в отведенные рамки, во-вторых, позволяет компилятору получать более быстрый код (данные не надо преобразовывать к какому-то типу для вычисления, а потом назад).
Если вычисляется (byte)*(smallint)+(integer) div (shortint), какого типа данные нужно выбирать компилятору для промежуточных значений и результата? А вот если все данные одного типа integer, то и думать не о чем.