Лабораторная 1. Порядковые типы данных в оперативной памяти

Разработать консольную программу, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
Shortint SmallInt Longint Longword Int64 Byte Word Cardinal QWord Char Boolean.

Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.

Для введенного типа данных вывести на экран (1) нижную границу типа, (2) верхнюю границу типа, (3) размер типа в байтах. Заполнить переменную введенного типа случайным значением из диапазона от нижней до верхней границы типа включительно. Вывести на экран (4) полученное значение, (5) предыдущее и (6) последующее значение. Вывести на экран (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти. Если полученное случайное значение является максимальным для данного типа, то вместо последующего (6) значения вывести слово Overflow. Если полученное случайное значение является минимальным для данного типа, то вместо предыдущего (5) значения также вывести слово Overflow.

Для формирования случайных значений исследуемых типов данных (кроме Boolean) рекомендуется заполнить содержимое соответствующих переменных побайтово случайными значениями из диапазона от 0 до 255.

Запрещается использовать константные значения характеристик типа. Значения всех характеристик типа следует вычислять, используя специальные операции (функции) для работы с порядковым типом данных (sizeof, low, high, pred, succ).

Пример вывода для типа Longint:

Исследуемый тип: Longint
Нижняя граница: -2147483648
Верхняя граница: 2147483647
Байт на переменную: 4
Случайное значение: 818295054
Предыдущее значение: 818295053
Последующее значение: 818295055
Содержимое оперативной памяти: 14 49 198 48 

Пример вывода для типа Char:

Исследуемый тип: Char
Нижняя граница: #0
Верхняя граница: #255
Байт на переменную: 1
Случайное значение: #255
Предыдущее значение: #254
Последующее значение: Overflow
Содержимое оперативной памяти: 255 

Пример вывода для типа Boolean:

Исследуемый тип: Boolean
Нижняя граница: FALSE
Верхняя граница: TRUE
Байт на переменную: 1
Случайное значение: FALSE
Предыдущее значение: Overflow
Последующее значение: TRUE
Содержимое оперативной памяти: 0