ЛР1. ЛР 1. 1. Откройте новый проект Delphi, создайте главную форму как указано на рис. 3
Скачать 0.7 Mb.
|
Ход работы 1. Откройте новый проект Delphi, создайте главную форму как указано на рис.3. 2. Разместите на форме компонент OpenGialog(закладка Dialogs). У свойствах Filter задать типы файлов как указано на рис.1. Рис. 1 Задание свойств Filter для OpenDialog 3. Создайте новую форму Form2 что бы задать ключь согласно рис.2. Задать для формы свойства BorderStyle=None; Visible=False; Position=poScreenCenter; Разместите на форме компонент Edit. Создайте для формы обработчики событий Рис. 2 Модальная форма для ввода Выделить код procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (key=VK_RETURN) then begin psw1:=Edit1.Text; ModalResult:=6; end; end; procedure TForm2.FormShow(Sender: TObject); begin Edit1.Text:=' '; end; 4. Создайте новую форму Form3 для визуальной демонстрации процесса шифрования. Задайте свойства BorderStyle=bsDialog; Visible=False; Position=poScreenCenter. Разместите на форме пять подписей, два поля Memo1 и Memo2, индикатор Gauge1(закладка Samples). 5.Создайте основную процедуру для шифрования за образцом Выделить код procedure XOR_alg; var f,f1:file of byte; b,b1:byte; s,s1:string; k,k100:integer; time(),time1:TDateTime; FileLen:integer; millisec:comp; procedure Code(b:byte; var bc:byte); var r,a:byte; begin r:=k mod length(psw1); a:=ord(psw1[r+1]); bc:=a XOR b end; begin Form3.Caption:='XOR алгоритм'; Form3.Label1.Caption:='Входной файл: '+name1; AssignFile(f,name1); Reset(f); FileLen:=FileSize(f); k100:=FileLen div 100; Form3.Label3.Caption:='Длинна файла '+IntToStr(FileLen)+' байт'; Form3.Label5.Caption:=''; Form3.Label2.Caption:='Зашифрованный файл: '+name1+'.cip'; AssignFile(f1,name1+'.cip'); Rewrite(f1); k:=0; //Счетчик количества символов Form3.Gauge1.Progress:=0;//показательиндикатора time0:=Time; //начало формулирования строк для вывода на екран s:=''; s1:=''; while not eof(f) do begin //очистка полей Memo для защиты от переполнения if k mod 20000=0 then begin Form3.Memo1.Clear; Form3.Memo2.Clear end; //отсчет процентов на индикаторе if k mod k100=0 then begin Form3.Gauge1.Progress:=Form3.Gauge1.Progress+1; //выводсистемноговремени Form3.Label4.Caption:='Время '+TimeToStr(Now); Form3.Refresh; //обновление формы end; read(f,b);//чтение байта из файла формирования строки для вывода на екран s:=s+chr(b); code(b,b1); //кодирование байта write(f1,b1);//запись байта в результирующий файл формирования строки для вывода на екран s1:=s1+chr(b1);//виведення на екран рядків по 80 символів if (b=13) or (length(s)>79) then begin Form3.Memo1.Lines.Add(s); Form3.Memo2.Lines.Add(s1); s:=''; s1:='';//очистка строчных буферов end; inc(k)//отсчетбайтов end; //выводостатковсимволовнаекран Form3.Memo1.Lines.Add(s); Form3.Memo2.Lines.Add(s1); time1:=Time-time();//вычисления часового промежутка Form3.Label4.Caption:='Время шифрования '+FormatDateTime(' n мин. ss, zz сек. ',time1); millisec:=TimeStampToMsecs(DateTimeToTimeStamp(time))-TimeStampToMsecs(DateTimeToTimeStamp(time0)); Form3.Label5.Caption:='Скорость '+IntToStr(Trunc(FileLen*1000/millisec))+' б/сек'; //окончание работы с файлами closefile(f); closefile(f1); ShowMessage('Сохранено в файле '+name1+'.cip'); end; 6. Для выполнения процедур та управления формами создайте обработчик событий для нажатия соответствующей кнопки главной формы Выделитькод procedure TForm1.ButtonClick(Sender: TObject); begin OpenDialog1.Title:='Выберите файл для шифрования / расшифровки'; OpenDialog1.Execute; if OpenDialog1.FileName='' then exit; name1:=OpenDialog1.FileName; Form1.Hide; Form2.ShowModal; if Form2.ModalResult=6 then begin ShowMessage('Ваш пароль'''+psw1+''''); Form2.Close; end; Form3.Show; XOR_alg; Form3.Close; Form1.Show; end; 7. В описующем разделе главной формы описать глобальные переменные Выделить код var Form1:TForm1; psw1,//ключшифрования name1//название файла, выбранного для шифрования :string; 8. Отладьте программу и сохраните все файлы проекта в отдельном каталоге для отчета. Рис. 3 Форма Form3 для демонстрации процесса шифрования |