Для хранения и обработки
символов используются переменные типа Ansichar и wideChar. Тип Ansichar представляет
собой набор ANSI-символов, з котором каждый символ кодируется восьмиразрядным
двоичным числом (байтом). Тип wideChar представляет собой набор символов в кодировке
Unicode, в которой каждый символ кодируется двумя байтами.
Для обеспечения совместимости
с предыдущими версиями поддерживается тип Char, эквивалентный AnsiChar.
Значением переменной
символьного типа может быть любой отображаемый символ:
- буква русского или латинского
алфавитов;
- цифра;
- знак препинания;
И специальный символ,
например, "новая строка".
Переменная символьного
типа должна быть объявлена в разделе объявления переменных. Инструкция объявления
символьной переменной в общем виде выглядит так:
Имя: char;
где:
- имя — имя переменной символьного
типа;
- char — ключевое слово обозначения
символьного типа.
Примеры:
otv:
char; ch: char;
Как и любая переменная
программы, переменная типа char может получить значение в результате выполнения
инструкции присваивания. Если переменная типа char получает значение в результате
выполнения операции присваивания, то справа от знака := должно стоять выражение
типа char, например, переменная типа char или символьная константа — символ,
заключенный в кавычки.
В результате выполнения
инструкций c1 := '*';
с2
:= c1;
переменная c1 получает
значение присваиванием значения константы, а переменная с2 — присваиванием значения
переменной cl (предполагается, что переменные c1 и с2 являются переменными символьного
типа).
Переменную типа char
можно сравнить с другой переменной типа char или с символьной константой. Сравнение
основано на том, что каждому символу поставлено в соответствие число (см. приложение
2), причем символу 'о' соответствует число меньшее, чем символу У, символу 'А'
— меньшее, чем 'в', символу V — меньшее, чем а. Таким образом, можно записать:
'0'<'1'<..<'9'<..<'A'<'B'<..<'Z'<'a'<'b'<..<'z'
Символам русского алфавита
соответствуют числа большие, чем символам латинского алфавита, при этом справедливо
следующее:
'А'<'Б'<'В'<..<'Ю'<'Я'<'а'<'б'<'в'<...<'э'<'ю'<'я'
В тексте программы
вместо символа можно указать его код, поставив перед числом оператор #. Например,
вместо константы 'в' можно записать #193. Такой способ записи, как правило,
используют для записи служебных символов или символов, которые во время набора
программы нельзя ввести с клавиатуры. К примеру, часто используемый при записи
сообщений символ "новая строка" записывается так: #13.
В программах обработки
символьной информации часто используют функции chr и Ord. Значением функции
chr является символ, код которого указан в качестве параметра. Например, в результате
выполнения инструкции c:=chr(32) переменной с будет присвоено значение пробел.
Функция ord позволяет определить код символа, который передается ей в качестве
параметра. Например, в результате выполнения инструкции k:=ord('*') переменная
k будет содержать число 42 — код символа *.
Программа, текст которой
приведен в листинге 3.1, выводит таблицу кодировки букв русского алфавита. Вид
окна программы представлен на рис. 3.1.
Основную работу выполняет
процедура обработки события OnActivate, которая формирует и выводит в поле метки
(Label1) таблицу. Событие OnActivate происходит при активизации формы приложения,
и поэтому процедура TForm1.FormActivate выполняется автоматически, сразу после
появления формы на экране.
Рис. 3.1. Форма приложения во время разработки
Рис. 3.2. Форма
приложения во время работы
Листинг 3.1. Таблица
символов
unittablsim_;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls;
type
TForm1
= class(TForm)
Label1:
TLabe1;
procedure
FormActivate(Sender: TObject); private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1:
TForm1;
implementation
{$R
*.DFM}
procedure TForm1.FormActivate(Sender: TObject);
var
st:string; // таблица формируется как строка символов
dec:
byte; // код символа
i,j:integer; // номер строки и колонки таблицы
begin
st:='';
dec:=192;
for
i:=0 to 15 do // шестнадцать строк
begin
dec:=i
+ 192;
for
j:=1 to 4 do // четыре колонки
begin
st:=st+chr(dec)+'-'+IntToStr(dec)+' '; dec:=dec + 16;
end;
st:=st + #13; // переход к новой строке экрана
end;
Label1.caption:=st;
end;
end.
Форма приложения Таблица
символов содержит только один компонент -поле метки (Label1l). Для того
чтобы колонки таблицы имели одинаковую ширину, свойству Label1.Font.Name следует
присвоить имя шрифта, у которого все символы имеют одинаковую ширину, например,
courier New cyr.
Вид окна приложения во время работы приведен на рис. 3.2.