Главная страница
Навигация по странице:

  • TObject );begin

  • ЛР1. ЛР 1. 1. Откройте новый проект Delphi, создайте главную форму как указано на рис. 3


    Скачать 0.7 Mb.
    Название1. Откройте новый проект Delphi, создайте главную форму как указано на рис. 3
    Дата11.01.2022
    Размер0.7 Mb.
    Формат файлаdocx
    Имя файлаЛР 1.docx
    ТипДокументы
    #328355


    Ход работы


    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 для демонстрации процесса шифрования


    написать администратору сайта