- •Лабораторная работа №9. Работа в delphi.
- •Виртуальные и asc II коды
- •Задание 1.1. Выведем в Memo1 несколько символов используя их ascii коды
- •Задание 1.2. Теперь выведем в Мемо1 весь латинский алфавит и ряд других символов.
- •Задание 1.3. Будем по нажатию клавиш выполнять различные действия.
- •Вернитесь в рп.
Лабораторная работа №9. Работа в delphi.
Виртуальные и asc II коды
Каждый символ внутри ПК кодируется определенным кодом, представляющим собой целочисленное значение. Например, в кодировке ASCII – код английской буквы ‘A’ равен 65, ‘B’ равен 66 и т.д. В Pascal, код получают с помощью функции
ORD(Simvol:Char); здесь параметр Simvol является переменной символьного типа Char и может содержать только один символ (память отведенная для переменной типа char 1байт ). А если наоборот хотим получить символ ‘A’ по заданному коду можно просто написать CHR(65) или CHAR(65), в первом случае CHR это функция, а во втором приведение к символьному типу.
Также существуют и виртуальные коды специально для всех клавиш. Все символы в кодировке ASCII имеют соответствующие виртуальные коды, но не все виртуальные коды имеют соответствующие коды в ASCII. (память, отведенная для хранения значения виртуального кода 2байта (word)).
Нужно отметить, что ASCII коды разработаны для кодирования символов, а виртуальные коды относятся именно к клавишам клавиатуры или мышки, просто многим клавишам (не всем) соответствует символ, поэтому можно провести соответствие между ASCII и виртуальными кодами.
Задание 1.1. Выведем в Memo1 несколько символов используя их ascii коды
Создайте новый проект. Скиньте на форму Memo1 и кнопку Button1.
Обработчик щелчка на Button1 должен выглядеть следующим образом:
var Simvol:Char; Kod:integer;
begin
memo1.Clear; // очищаем Memo1
Simvol:=Chr(65);//Присваиваем переменной Simvol символ ’A’ по его ASCII коду 65
// То же самое Можно было бы написать просто Simvol:=’A’
memo1.Lines.Add(Simvol); // Выводим символ в Мемо1
end;
Запустите программу. Проверьте её работу. Вернитесь в РП (РЕЖИМ ПРОГРАММИРОВАНИЯ).
Теперь если хотим получить код символа ‘A’ в переменную целого типа здесь же допишем следующее:
Simvol:=’A’;// Та же инструкция что и Simvol:=Chr(65) в более простом виде
Kod:=ORD(Simvol);// определяем код символа функцией ORD
Memo1.lines.add(‘Код символа ’+Simvol+’ равен ’+IntToStr(Kod));
Запустите программу. Проверьте её работу. Вернитесь в РП
Задание 1.2. Теперь выведем в Мемо1 весь латинский алфавит и ряд других символов.
Ради разнообразия будем использовать цикл Repeat, хотя в данном случае лучше For.
Здесь же в разделе var добавьте переменную i типа integer; и переменную строкового типа stroka:string. Здесь же в обработчике щелчка допишите к уже написанному следующее:
i:=0; // тут будет ASCII код символа, начнем с нулевого номера
stroka:=''; // будем формировать строку из символов, сначала строка пустая
REPEAT // Начался цикл
Stroka:=Stroka+' '+Chr(i); // формируем строку из символов типа Char
i:=i+1; // изменяем код символа на единицу выше (можно и так Inc(i))
if (i mod 50=0) then // Если в строке накопилось 50 символов
begin
Memo1.lines.add(Stroka); // то, выводим её в Memo1
Stroka:=''; // Снова очищаем строку для нового накопления символов
end;
UNTIL i=220; // Цикл закончится если условие i=220 окажется истинным
Запустите программу. Проверьте её работу. Вернитесь в РП