Листинг 12.13.
Объявление типов и класса нашей формы
type
//исходный алфавит русского языка
TRusSrcAlphabet = array [0..65] of Char;
//сопоставление букв алфавита открытого текста и зашифрованного
TRusDstAlphabet = array [Char] of Char;
TfmCryptography = class(TForm)
mmDecryptMessage: TMemo;
mmEncryptMessage: TMemo;
lbDecryptMessage: TLabel;
lbEncryptMessage: TLabel;
btnEncryptMessage: TButton;
btnDecpyptMessage: TButton;
edKey: TEdit;
lbKey: TLabel;
procedure btnEncryptMessageClick(Sender: TObject);
procedure btnDecpyptMessageClick(Sender: TObject);
private
{ Private declarations }
RusDstAlphabet: TRusDstAlphabet;
function GetKey: Integer;
procedure RecalcAlphabet(nKey: Integer);
function EncryptDecryptString(strMsg: String;
nKey: Integer): String;
public
{ Public declarations }
end;
var
RusSrcAlphabet: TRusSrcAlphabet =
\'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ\' +
\'абвгдеёжзийклмнопрстуфхцчшщъыьэюя\
fmCryptography: TfmCryptography;
Далее приведем описание работы методов, решающих определенные подзадачи, которые возникают в процессе решения основной проблемы. Итак, начнем рассмотрение с функции получения введенного пользователем ключа. Ее работа заключается в следующем. Сначала текстовое представление ключа преобразуется в численное представление. Далее проверяется, успешно ли прошло преобразование. Если все отлично, то возвращается полученное значение. В противном случае результатом функции будет -1, что свидетельствует о некорректном вводе пользователем ключа. Исходный код данной функции приведен в листинге 12.14.