Пятница, Октябрь 30Добро пожаловать!

Символы в языке Delphi

Поговорим о том, как представляют символы в языке Delphi и какого типа данных они могут быть. Чтобы хранить и обрабатывать символы, используют переменные, имеющие тип данных Ansichar и wideChar:

  1. Тип данных Ansichar представляется в виде некоторого набора ANSI-символов, который содержит в себе символы, кодирующиеся одним байтом (байт – восьмиразрядное двоичное число).
  2. Типу данных wideChar соответствует набор символов с кодировкой Unicode, который включает в себя символы, кодирующиеся двумя байтами.

Чтобы обеспечить совместимость с предыдущими версиями, пользуются типом данных Char, который эквивалентен типу Ansichar. В качестве значения переменной, имеющей символьный тип, может выступать любой отображающийся символ:

  • какая-либо цифра,
  • какой-либо знак препинания,
  • любая буква русского или латинского алфавита,

а также специальный символ, к примеру,  ‘новая строка’.

Как полагается, переменная с символьным типом данных объявляется в разделе var (раздел объявления переменных). Общий вид инструкции объявления символов Delphi таков:

name: char;

откуда

  • name – означает переменную с символьным типом данных;
  • char – специальное ключевое слово, которое обозначает символьный тип.

Пример 1.

st: char; 
family: char;

Как в случае любой переменной, переменная с символьным типом char приобретает значение в процессе выполнения инструкции присваивания. Допустим, если после того, как выполнена инструкция присваивания, переменная, имеющая тип char получает некоторое значение, то справа от знака присваивания := должно находиться выражение с типом char, к примеру, переменная с типом char, либо символьная константа – какой-либо символ, заключающийся в кавычках.

Пример 2.

Пусть переменные a и b – переменные символьного типа. Как только выполнены инструкции

n:= ‘*’; 
m:=a;

переменная a приобретает значение при помощи присваивания значения указанной константы, а переменная b – с помощью присваивания значения вышеупомянутой переменной a.

Сравнение переменной с символьным типом char с какой-либо другой переменной, имеющей тип char, либо с символьной константой также возможно. Это сравнение заключается в том, что каждому символу соответствует определенное число. Например, символ ‘о’ – меньшее число, чем символ У, символ ‘А’ – меньше число, чем символ ‘в’, символу V ставится в соответствие число меньше, чем а. В результате можно написать:

‘0’ < ‘1’ < … < ‘9’ < … < ‘A’ < ‘B ‘< … < ‘Z’ < ‘a’ < ‘b’ < … < ‘z’

Большие числа ставят в соответствие символам русского алфавита, тогда как малыми числами обозначают символы латинского алфавита. Справедливо следующее утверждение:

‘А’ < ‘Б’ < ‘В’ < … < ‘Ю’ < ‘Я’ < ‘а’ < ‘б’ < ‘в’ < … < ‘э’ < ‘ю’ < ‘я’

В исходном коде программы вместо самого символа можно указать соответствующий ему код, состоящий из оператора # и следующим за ним определенным числом. К примеру, вместо символа ‘в’ можно указать его код:#193. Данный способ представления символа лучше всего используют, когда необходимо записать служебные символы или символы, которые в процессе составления программы невозможно вводить с клавиатуры. Например, очень часто в исходном коде программы в процессе записи сообщений вместе символа «новая строка» используется код #13.

Чтобы обработать символы в языке Delphi, применяют функции chr и ord.

Функция chr в языке Delphi

Функция chr возвращает значение – символ, код которого выступает параметром данной функции.

Пример

n:=chr(32);

Эта инструкция означает, что переменной n присваивается значение пробел.

Функция ord в языке Delphi

При помощи функции ord определяется код символа, передающийся ей как параметр.

Пример

m:=ord(‘*’);

Результатом выполнения данной инструкции будет переменная m, содержащее число 42, которое составляет код символа «*».

Примеры программ на символы в языке Delphi

Создадим программу (ее листинг представлен ниже), которая выводит буквы русского алфавита и их кодировку:

unit kodirovka; 
interfaceuses 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 
s:string;      // представим таблицу как строку символов 
kod: byte;  // кодировка символа 
i,j:integer;  // i — номер строки, j — номер колонки таблицы 
begin 
s:=’ ‘; 
kod:=192; 
for i:=0 to 15 do // вывод будет осуществляться в 16-ти строках 
begin 
kod:=i + 192; 
for j:=1 to 4 do  // образуем 4 колонки в таблице 
begin 
s:=s+chr(kod)+’-‘+IntToStr(kod)+’ ‘; 
kod:=kod + 16; 
end; 
s:=s + #13;           // переход к новой строке экрана 
end; 
Label1.caption:=s; 
end;
end.

Как мы видим из исходного кода программы, основная работа выполняется при помощи процедуры обработки события OnActivate, формирующей и выводящей в поле метки (в нашем случае, Label1) необходимую таблицу. Событие OnActivate действует при активизации формы приложения. Вследствие этого, как только форма появилась на дисплее, происходит автоматическое выполнение процедуры TForm1.FormActivate. На рис. снизу представлен вид окна нашей программы:

На рисунке ниже представлено окно приложения «Таблица символов», и как видим, на ней расположен только один компонент Label1. Чтобы обеспечить одинаковую ширину колонкам таблицы, необходимо присвоение свойству Label1.Font.Name имени шрифта, который представляет все символы с одинаковой шириной, к примеру, шрифт Courier New Cyr.

символы Delphi

Данная статья раскрыла понятие символы в языке Delphi. Увидимся в  следующих статьях.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *