Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы IT / ЛабаDelphi9.doc
Скачиваний:
57
Добавлен:
06.02.2015
Размер:
140.29 Кб
Скачать

Лабораторная работа №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 окажется истинным

Запустите программу. Проверьте её работу. Вернитесь в РП

Соседние файлы в папке Лабы IT