Опубликован: 07.04.2008 | Уровень: специалист | Доступ: платный
Лекция 10:

Символьные типы данных

< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Аннотация: В этой лекции мы вернемся к символьным типам данных, и изучим их подробней. Освоим новую WinAPI-функцию MessageBox(), научимся обрабатывать строки.

Символ

Символ – это один знак. Любой – буква, цифра, арифметический знак или пробел, знак препинания или подчеркивания... А также специальные символы – переход на новую строку, BackSpace, знак доллара или процент. Тип "символ" в Delphi обозначается Char:

var
    c : Char;
begin
  c := 'В';
  ShowMessage('Вы ввели ' + c);
  c := #13;
  ShowMessage('Переход на новую' + c + 'строку');
   ...

Мы уже говорили, что символы берутся из таблицы символов ANSI или UNICODE. Большинство символов используются, некоторые символы являются служебными. Обратите внимание, что большая буква "А" и маленькая "а" - это разные символы! Также разными символами являются латинская "с" и русская "с", хотя они похожи, как две капли воды.

Нулевой символ не используется, он зарезервирован как полный нуль. Программисты нашли достойное применение этому символу, используя его в событиях ввода текста, когда требуется запретить пользователю ввод каких-либо символов. Служебные символы мы не можем увидеть в текстовом поле. Служебные символы, это <Esc>, <Enter>, <Tab> и другие. Каждый символ обрабатывается компьютером как число от 0 до 255, таким образом, слово "ПРИВЕТ" в памяти машины будет выглядеть как набор цифр: "207 208 200 194 197 210".

Функции работы с символами

В практике часто приходится обрабатывать отдельные символы. Переменным символьного типа Char можно присваивать значения таким образом:

var
   c,b : Char;
begin
   c := 'a';
   b := c;

Поскольку для компьютера символ – число, то символьные данные можно сравнивать между собой. При этом большим будет тот символ, код которого в таблице символов больше. Например, код 'я' будет больше, чем код 'а':

if b > c then ShowMessage('Истина!')
else ShowMessage('Ложь!');

При работе с символьными переменными часто используют функции Chr() и Ord(). Функция Chr() принимает в качестве параметра число и возвращает символ, который соответствует этому числу в таблице ANSI:

function Chr ( X: Byte ): Char;

Функция Ord() совершает прямо противоположное действие, она принимает в качестве параметра символ, и возвращает число, под которым этот символ хранится в таблице ANSI:

function Ord ( C: Char ): Byte;

Символьные переменные можно использовать с этими функциями:

a := Chr(200); 
i := Ord(a);
i := Ord('f');

В первой строке в переменную a мы записали символ "И", которому в таблице символов соответствует номер 200. Во вторую, целую переменную, мы записали число 200, так как символ с этим номером был записан в переменную a, которую мы передали в качестве параметра. Наконец, в третьей строке мы в целую переменную записали число 102, этот номер соответствует символу "f".

Строка

Строка – это набор символов. Строку можно представить в виде статичного или динамичного массива символьных данных. Типы строк мы уже разбирали в "Управляющая конструкция if, цикл for" : AnsiString – строка из ANSI – символов, и WideString – строка из UNICODE – символов.

Тип String не является отдельным типом, по умолчанию он равен AnsiString. Однако его можно перенастроить и на WideString, хотя в этом нет необходимости. Поэтому смело указывайте строковые переменные, как String:

var
   s : String;
begin
   s := 'Это многострочная' + #13 + 'строка';
   ShowMessage(s);

Как видно из примера, строку можно составлять из нескольких подстрок, и даже добавлять в нее отдельные символы. В примере мы добавили символ под номером 13, это символ перехода на новую строку. В результате выполнения этого кода процедура ShowMessage() выведет на экран сообщение, разбитое на две строки:

Это многострочная
строка

ShortString – короткая строка из ANSI – символов. Может содержать от 0 до 255 символов. Используется нечасто. Собственно, вы можете объявить тип String с заранее указанным размером:

var
   s : String[100];

Как видите, строка объявляется с числовым индексом, почти как массив. Собственно, строка символов и есть массив символьных данных, и обращаться с ней можно так же. Индексация символов в строке начинается с единицы, то есть, индексу 1 соответствует 1-й символ строки.

var
   stroka : String;
begin
   stroka := 'Привет';
   stroka[5] := 'а';  //изменили 5-й символ строки
   ShowMessage(stroka); //результат: строка "Приват"
< Лекция 9 || Лекция 10: 123 || Лекция 11 >
Виктор Пелих
Виктор Пелих

Здравствуйте.
Прохожу курс "Введение в программирование на Delphi"
Добрался до Лекции 29: Введение в базы данных.

Установлена RAD Studio 11.3, у которой отсутствует вкладка BDE и, соответственно, компонент Table,  который обеспечивает доступ к таблице средствами механизма BDE.
Поиск в интернете подсказал 
BDE Installer for RAD Studio, Delphi, C++Builder 10.3 Rio
Подскажите, имеется ли ещё возможность использовать механизм BDE в Delphi11 и если такая возможность есть, как подключить BDE к Delphi11?
С уважением...

 

Федор Антонов
Федор Антонов

Здравствуйте!

Записался на ваш курс, но не понимаю как произвести оплату.

Надо ли писать заявление и, если да, то куда отправлять?

как я получу диплом о профессиональной переподготовке?

Надежда Таргын
Надежда Таргын
Россия, Кызыл
Оксана Прохорова
Оксана Прохорова
Россия, Уфа, УГАТУ, 1995