Для зберігання і обробки символів використовуються змінні типу 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. Таблиця символів
unit tablsim _; 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.