В приложении А представлен текст программы реализующий алгоритм шифрования методом Цезаря.
На форме расположено три компонента Button: зашифровать (Button1), расшифровать (Button2), ключ (Button3). При нажатии на кнопку ключ (Button3) срабатывает процедура TForm1.Button3Click которая осуществляет чтение ключа из текстового файла. В этой процедуре используются следующие переменные:
– f (тип textfile) – применяется для работы с физическим файлом;
– l (тип string) – используется как вспомогательная переменная для работы с элементами файла;
– k (тип integer) – это переменная в которой хранится ключ считанный с файла.
В теле процедуры проверяется условие OpenDialog1.Execute=true. Если оно выполняется, то с помощью процедуры AssignFile связывается файловая переменная f с физическим файлом.
После этого осуществляется открытие файла для чтения с помощью процедуры reset. Процедурой read считываем из файла f символ, который записываем в переменную l, а затем переводим её из строкового типа в целый, и выводим его значение в компонент Edit1. После того, как считан символ из файла он закрывается с помощью процедуры closefile.
При нажатии на кнопку зашифровать (Button1) срабатывает процедура TForm1.Button1Click. Для работы используются следующие глобальные переменные:
– Buk (тип string) – массив констант, в котором записаны заглавные и строчные буквы русского алфавита;
– t (тип string) – текст используемый для шифрования;
– j , i (тип integer) используются как переменные счетчика;
– g (тип integer) – количество символов строковой переменной t.
В начале процедуры в переменную t записывается текст из компонента Memo1, который необходимо зашифровать. Затем определяем длину строки t с помощью функции length. После этого очищаем компонент Memo2, куда будет вводиться зашифрованный текст с помощью метода Clear. Потом организовываем цикл с параметром, цикл от 1 до длинны строки t. Внутри цикла проверяется условие (t[i] = ‘ ‘) or (t[i] = ‘.’) or (t[i] = ‘,’), если оно выполняется, то в компонент Memo2 выводится i-ый символ строки t. Если условие не выполняется, то увеличивается значение счетчика j на единицу, при условии t[i]<>Buk[j] (это осуществляется с помощью цикла while). Увеличиваем значение счетчика j на k, т.е. указываем позицию символа, которой необходимо поставить на место данного символа в строке t и выводим полученное значение в компонент Memo2.