Основное назначение символьного типа данных - организация вывода информации на экран компьютера и принтер. В Windows обеспечена поддержка трех наиболее важных наборов символов:
1. OEM - набор символов по умолчанию для MS-DOS.
2. ANSI - набор символов по умолчанию для Windows 9.x.
3. Unicode - набор символов по умолчанию для Windows NT/2000.
Фундаментом наборов символов OEM и ANSI служит код ASCII, в котором каждый символ представлен значением от 0 до 127 (соответственно символ занимает 7 бит памяти). Кодам от 0 до 31 и 127 стандартный 8-битный набор ставит в соответствие управляющие символы (например, символы забоя, та-
буляции, конца строки и возврата каретки); остальные символы могут быть выведены на экран. Исторически сложилось, что оставшиеся символы были закреплены за латинскими буквами.
Вскоре был задействован и восьмой бит кода, что позволило расширить код ASCII до 256 символов («расширенный набор символов»). Этот набор символов был разработан производителями IBM PC и получил название OEM. Здесь коды от 32 до 126 унаследованы от ASCII, а оставшиеся коды включают дополнительные символы, в частности символы псевдографики для программ DOS.
В большинстве случаев Windows и приложения под Win32 используют «набор символов ANSI». Коды данного набора от 32 (0х20) до 127 (0х7Е) соответствуют коду ASCII. Сравнительно недавно появилась еще одна кодировка, получившая название UNICODE. Один символ в такой кодировке занимает целых два байта, и благодаря этому он может принимать одно из 65535 значений.
Итак, для работы с отдельными символами Delphi предоставляет следующие типы данных:
Логические (булевы) типы
Логический тип применяется для хранения логических данных, способных принимать только два значения: 1 (true/истина) и 0 (false/ложь).
Перечислимые типы
Перечислимые типы относятся к типу данных, определяемых программистом. Перечислимый тип данных задается списком имен.
type TypeName = (Value1, Value2,..., Value19);
Числа, а также логические и символьные константы не могут быть элементами перечислимого типа. В качестве примера представим перечислимый тип, соответствующий дням недели:
type TypeWeekDay =(Mon, Tu, We, Th, Fr, Sa, Su);
var WDay1, WDay2 : TypeWeekDay; begin
WDayl : = Mon; WDay2 : = Tu; end;
Особенность перечислимого типа в том, что каждому его элементу соответствует порядковый номер, начиная с 0. Наличие порядкового номера позволяет проводить операции сравнения:
if WDay1<WDay2 then ...
Совместно с данными перечислимого типа зачастую используют следующие функции:
function Pred(X); // возвращает предшествующее значение аргумента function Succ(X); // возвращает следующее значение аргумента
Поддиапазоны
Переменная, входящая в поддиапазон, может принимать значения только в пределах границ диапазона.
type SubIntegerRange = 10 .. 100; type SubCha rRange = 'A' 'Z';
var IntValue : SubIntegerRange; CharValue : SubCharRange;
MyValue : = 50; CharValue : = 'X';
При попытке присвоить переменной IntValue значение вне диапазона SubIntegerRange компилятор Delphi откажется иметь с нами дело.