Читаем Delphi. Трюки и эффекты полностью

Листинг 12.11. Функция получения части текста заданной длины, начиная с указанной позиции, в виде одной строки

function TfmTransposition.GetLine(Lines: TStrings;

nRow, nInd: Integer): String;

var

i, j, k: Integer;

s: String;

begin

Result := \'\

s := \'\

k := nInd;

for i := nRow to Lines.Count – 1 do

begin

for j := k to Length(Lines[i]) do

begin

s := s + Lines[i][j];

if Length(s) = Rear[0] then

begin

Result := s;

Exit;

end;

end;

k := 1;

end;

end;

Подготовительный этап мы рассмотрели, теперь остается рассмотреть основной код программы. Обработчики кнопок Onclick вызывают один и тот же метод и указывают необходимые параметры, чтобы зашифровать либо дешифровать текст сообщения. Процедура EncryptDecrypt в качестве параметров принимает источник текста сообщения, с которым нужно проделать необходимые действия, приемник преобразованного текста сообщения и тип преобразования. Последний параметр принимает одно из двух значений: 0 или 1. Значение О указывает на то, что будет производиться шифрование сообщения. Значение 1 указывает на то, что будет производиться дешифрование сообщения. Процедура EncryptDecrypt выполняет следующие действия. Сначала она пытается подготовить необходимую перестановку и, только если все прошло успешно, переходит к попытке преобразования текста сообщения, но предварительно делает еще одну проверку. Эта проверка заключается в следующем: нужно удостовериться в соответствии общей длины текста накладываемому на нее ограничению, то есть длина обязана быть кратна периоду транспозиции. Если все хорошо, то далее следует код преобразования текста сообщения с использованием подготовленной транспозиции. Для начала приведем исходный код, который находится в листинге 12.12.

...

Листинг 12.12. Шифрование/дешифрование текста сообщения

procedure TfmTransposition.btnEncryptMessageClick (Sender:

TObject);

begin

EncryptDecrypt(mmDecryptMessage.Lines,

mmEncryptMessage.Lines, 0);

end;

procedure TfmTransposition.btnDecpyptMessageClick(Sender:

TObject);

begin

EncryptDecrypt(mmEncryptMessage.Lines,

mmDecryptMessage.Lines, 1);

end;

procedure TfmTransposition.EncryptDecrypt(SrcLines,

DstLines: TStrings;

nKey: Integer);

var

i, j, Cnt: Integer;

s, EncryptMsg: String;

begin

if RecalcRearrangement(nKey) then

begin

//вычисляем общую длину текста

Cnt := 0;

for i := 0 to SrcLines.Count – 1 do

Inc(Cnt, Length(SrcLines[i]));

//проверяем кратность общей длины длине перестановки

if Cnt mod Rear[0] <> 0 then

begin

MessageDlg(\'Ошибка: текст сообщения не кратен длине

перестановки\', mtError, [mbOk], 0);

Exit;

end;

//преобразуем сообщение

Cnt := Rear[0];

DstLines.BeginUpdate;

DstLines.Clear;

for i := 0 to SrcLines.Count – 1 do

begin

EncryptMsg := \'\

for j := 1 to Length(SrcLines[i]) do

begin

if Cnt = Rear[0] then

begin

s := GetLine(SrcLines, i, j);

Cnt := 0;

end;

Inc(Cnt);

EncryptMsg := EncryptMsg + s[Rear[Cnt]];

end;

DstLines.Add(EncryptMsg);

end;

DstLines.EndUpdate;

end

else

MessageDlg(\'Ошибка: перестановка задана неверно\', mtError,

[mbOk], 0);

end;

Перейти на страницу:

Похожие книги

102 способа хищения электроэнергии
102 способа хищения электроэнергии

Рассмотрена проблема хищений электроэнергии и снижения коммерческих потерь в электрических сетях потребителей. Приведены законодательно–правовые основы для привлечения к ответственности виновных в хищении электроэнергии. Изложены вопросы определения расчетных параметров средств учета электроэнергии, показаны схемы подключения счетчиков электрической энергии. Описаны расчетные и технологические способы хищения электроэнергии. Обсуждаются организационные и технические мероприятия по обнаружению, предотвращению и устранению хищений.Для работников энергоснабжающих организаций и инспекторского состава органов Ростехнадзора. Материалы книги могут быть использованы руководителями и специалистами энергослужб предприятий (организаций) для правильного определения расчетных параметров средств учета и потерь электроэнергии в электрических сетях.Если потенциальные расхитители электроэнергии надеются найти в книге «полезные советы», они должны отдавать себе отчет, что контролирующие структуры информированы в не меньшей степени и, следовательно, вооружены для эффективной борьбы с противоправной деятельностью.Настоящая книга является переработанным и дополненным изданием выпущенной в 2005 г. книги «101 способ хищения электроэнергии».

Валентин Викторович Красник

Технические науки / Образование и наука
100 великих чудес инженерной мысли
100 великих чудес инженерной мысли

За два последних столетия научно-технический прогресс совершил ошеломляющий рывок. На что ранее человечество затрачивало века, теперь уходят десятилетия или всего лишь годы. При таких темпах развития науки и техники сегодня удивить мир чем-то особенным очень трудно. Но в прежние времена появление нового творения инженерной мысли зачастую означало преодоление очередного рубежа, решение той или иной крайне актуальной задачи. Человечество «брало очередную высоту», и эта «высота» служила отправной точкой для новых свершений. Довольно много сооружений и изделий, даже утративших утилитарное значение, тем не менее остались в памяти людей как чудеса науки и техники. Новая книга серии «Популярная коллекция «100 великих» рассказывает о чудесах инженерной мысли разных стран и эпох: от изобретений и построек Древнего Востока и Античности до небоскребов в сегодняшних странах Юго-Восточной и Восточной Азии.

Андрей Юрьевич Низовский

История / Технические науки / Образование и наука
Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки