Смекни!
smekni.com

Шифры простой замены (стр. 2 из 2)

5. Расположите компоненты на форме по образцу:

6. Создайте следующие подпрограммы шифрования строк (после implementation):

{ШифрАтбаш. Симметричный}

function catbash(s:string):string;

var i:integer; c,d:char;rez:string;

begin

rez:='';

for i:=1 to length(s) do

begin

c:=s[i];

d:=chr(255-ord(c));

rez:=rez+d;

end;

catbash:=rez;

end;

{ШифрЦезаря. Шифрование}

function cEcezar(s:string; key:byte):string;

var i:integer; c,d:char;rez:string;

begin

rez:='';

for i:=1 to length(s) do

begin

c:=s[i];

d:=chr((ord(c)+ key)mod 255);

rez:=rez+d;

end;

cEcezar:=rez;

end;

{ШифрЦезаря. Расшифрование}

function cDcezar(s:string;key:byte):string;

var i:integer; c,d:char;rez:string;

begin

rez:='';

for i:=1 to length(s) do

begin

c:=s[i];

d:=chr((ord(c)- key)mod 255);

rez:=rez+d;

end;

cDcezar:=rez;

end;

7. Двойным щелчком вызовите редактор компонента Crypto (TActionList) и создайте следующие действия:

Для переименования в соответствии с образцом измените свойство Name у каждого действия.

8. Для каждого из действий опишите подпрограммы:

procedure TForm1.AtbashExecute(Sender: TObject);

var i:integer;

begin

for i:=0 to memo1.Lines.Count do

memo2.Lines.Add(catbash(memo1.Lines[i]));

end;

procedure TForm1.ECezarExecute(Sender: TObject);

var i:integer;key:byte;

begin

key:=strtoint(inputbox('ШифрЦезаря','Введитезначениеключа - толькоцелоечисло','3'));

for i:=0 to memo1.Lines.Count do

memo2.Lines.Add(cEcezar(memo1.Lines[i],key));

end;

procedure TForm1.DCezarExecute(Sender: TObject);

var i:integer;key:byte;

begin

key:=strtoint(inputbox('ШифрЦезаря','Введитезначениеключа - толькоцелоечисло','3'));

for i:=0 to memo1.Lines.Count do

memo2.Lines.Add(cDcezar(memo1.Lines[i],key));

end;

procedure TForm1.clearExecute(Sender: TObject);

begin

memo2.Clear;

end;

procedure TForm1.changeExecute(Sender: TObject);

begin

memo1.Lines:=memo2.Lines;

memo2.Clear;

end;

9. Опишите подпрограммы для каждой из кнопок BitBtn:

procedure TForm1.BitBtn1Click(Sender: TObject);

begin

if clr.Checked then memo2.clear;

if combobox1.ItemIndex=0 then atbash.Execute

else if action.ItemIndex=0 then ECezar.Execute

else DCezar.Execute;

end;

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

memo1.Clear;

end;

procedure TForm1.BitBtn3Click(Sender: TObject);

begin

memo2.Clear;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

change.Execute;

end;

procedure TForm1.BitBtn5Click(Sender: TObject);

begin

close;

end;

procedure TForm1.BitBtn6Click(Sender: TObject);

begin

if Opendialog1.Execute then

memo1.Lines.LoadFromFile(opendialog1.FileName);

end;

procedure TForm1.BitBtn7Click(Sender: TObject);

begin

if Savedialog1.Execute then

memo2.Lines.SaveToFile(savedialog1.FileName);

end;

10. Запустите проект.