Для хранения и обработки
символов используются переменные типа Ansichar и wideChar. Тип Ansichar представляет
собой набор ANSI-символов, з котором каждый символ кодируется восьмиразрядным
двоичным числом (байтом). Тип wideChar представляет собой набор символов в кодировке
Unicode, в которой каждый символ кодируется двумя байтами.
Для обеспечения совместимости
с предыдущими версиями поддерживается тип Char, эквивалентный AnsiChar.
Значением переменной
символьного типа может быть любой отображаемый символ:
И специальный символ,
например, "новая строка".
Переменная символьного
типа должна быть объявлена в разделе объявления переменных. Инструкция объявления
символьной переменной в общем виде выглядит так:
Имя: 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.
Релятивисты и позитивисты утверждают, что "мысленный эксперимент" весьма полезный интрумент для проверки теорий (также возникающих в нашем уме) на непротиворечивость. В этом они обманывают людей, так как любая проверка может осуществляться только независимым от объекта проверки источником. Сам заявитель гипотезы не может быть проверкой своего же заявления, так как причина самого этого заявления есть отсутствие видимых для заявителя противоречий в заявлении.
Это мы видим на примере СТО и ОТО, превратившихся в своеобразный вид религии, управляющей наукой и общественным мнением. Никакое количество фактов, противоречащих им, не может преодолеть формулу Эйнштейна: "Если факт не соответствует теории - измените факт" (В другом варианте " - Факт не соответствует теории? - Тем хуже для факта").
Максимально, на что может претендовать "мысленный эксперимент" - это только на внутреннюю непротиворечивость гипотезы в рамках собственной, часто отнюдь не истинной логики заявителя. Соответсвие практике это не проверяет. Настоящая проверка может состояться только в действительном физическом эксперименте.
Эксперимент на то и эксперимент, что он есть не изощрение мысли, а проверка мысли. Непротиворечивая внутри себя мысль не может сама себя проверить. Это доказано Куртом Гёделем.
Понятие "мысленный эксперимент" придумано специально спекулянтами - релятивистами для шулерской подмены реальной проверки мысли на практике (эксперимента) своим "честным словом". Подробнее читайте в FAQ по эфирной физике.