Кодирование русского текста методом сдвигаDelphi , Синтаксис , ШифрованиеКодирование русского текста методом сдвига
unit uMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, Spin; type TForm1 = class(TForm) Panel1: TPanel; mmText: TMemo; Label1: TLabel; seN: TSpinEdit; Label2: TLabel; btEncode: TButton; btDecode: TButton; procedure btEncodeClick(Sender: TObject); private { Private declarations } procedure Encode(bCode: boolean; n: integer); // Encode - ПРОЦЕДУРА // bCode - зашифровать/расшифровать // n - шаг смещения public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} // ПРОЦЕДУРА КОДИРОВАНИЯ procedure TForm1.Encode(bCode: boolean; n: integer); const sMsgRangeErr = 'Значение шага должно быть от %d до %d!'; // Крайние символы для кодирования chBigFirstLetter: char = 'А'; chBigLastLetter: char = 'Я'; chFirstLetter: char = 'а'; chLastLetter: char = 'я'; var iMinOrd: integer; // Код символа с наименьшим кодом iMaxOrd: integer; // Код символа с наибольшим кодом i: integer; // Для фикла iTempOrd: integer; // Код подставляемого символа ch: char; // Каждый символ текста s: string; // Преобразуемый текст begin // Проверка шага на диапазон допустимых значений if (n > Ord(chBigLastLetter) - Ord(chBigFirstLetter)) or (n < 1) then begin MessageDlg(Format(sMsgRangeErr, [1, Ord(chBigLastLetter) - Ord(chBigFirstLetter)]), mtError, [mbOk], 0); Exit; end; s := Trim(mmText.Text); if s <> '' then // Если есть текст for i := 1 to Length(s) do // Проходит каждый символ begin ch := s[i]; // Если очередной символ нужно кодировать if ch in [chBigFirstLetter .. chBigLastLetter] then // Заглавные буквы begin iMinOrd := Ord(chBigFirstLetter); iMaxOrd := Ord(chBigLastLetter); end else if ch in [chFirstLetter .. chLastLetter] then // Строчные буквы begin iMinOrd := Ord(chFirstLetter); iMaxOrd := Ord(chLastLetter); end else // Символ кодировать не нужно continue; if bCode then // Закодировать begin iTempOrd := Ord(ch) + n; // Получаем потенциальную позицию if iMaxOrd - iTempOrd < 0 then // Если символ зашел за границу предельного ch := Chr(iMinOrd + abs(iMaxOrd - iTempOrd) - 1) // Возьмем символ с другого конца круга else // Если нет.. ch := chr(iTempOrd); //..все нормально end else // Раскодировать begin iTempOrd := Ord(ch) - n; // Получаем потенциальную позицию if iMinOrd - iTempOrd > 0 then // Если символ зашел за границу предельного ch := Chr(iMaxOrd - (iMinOrd - iTempOrd - 1)) // Возьмем символ с другого конца круга else // Если нет.. ch := chr(iTempOrd); //..все нормально end; s[i] := ch; end; mmText.Text := s; end; procedure TForm1.btEncodeClick(Sender: TObject); begin Encode(boolean((Sender as TButton).Tag), seN.Value); end; end.Скачать весь проект Программа на языке Delphi реализует простой шифр Цезаря, который является типом замены шифра, где каждый символ в тексте, который нужно зашифровать или расшифровать, смещается на определенное количество мест вниз алфавита. Программа позволяет пользователю зашифровывать или расшифровывать текст, смещая его символы. Программа состоит из основной формы с несколькими компонентами:
Программа использует два процедура: Программа сначала проверяет, находится ли значение смещения в допустимом диапазоне (от 1 до 25). Если не, она отображает сообщение об ошибке. Затем она перебирает каждый символ в тексте ввода. Для каждого символа она проверяет, является ли он заглавной или строчной буквой и корректирует смещение соответственно. Если Если Наконец, программа обновляет текст в поле ввода с зашифрованным или расшифрованным текстом. Процедура В целом, это программа простого реализации шифра Цезаря на языке Delphi. Кодирование русского текста методом сдвига - статья рассказывает о кодировании текста русского языка методом сдвига, реализованном в программе на языке Delphi. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Шифрование ::
|
||||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |