воскресенье, 14 ноября 2010 г.

Код проекта "Плавающий алгоритм защиты"

//Отчет и пояснительная записка тут http://depositfiles.com/files/j2e6v2qp3
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, MaskEdit, ComCtrls;

type

{ TMainForm }

TMainForm = class(TForm)
AcceptBtn: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ProgressBar1: TProgressBar;
SecretLabel: TLabel;
MaskEdit1: TMaskEdit;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
Timer1: TTimer;
procedure AcceptBtnClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SecretLabelClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
{==================================MyClass=====================================}
TMatrix=class(TObject)
Password:String; //Пароль
Matr:array[1..15,1..15] of integer; //Матрица Пароля
Constructor Create;
Destructor Destroy;
Function ChkPsswrd(pwd:string):boolean; //Проверка пароля
Procedure GenPass; //Генерация пароля
end;
{================================End of my class===============================}
var
MainForm: TMainForm;
CC:boolean; //переменная CanClose
MyMatrix:TMatrix; //Объект моего класса
implementation
{================================My class' methods=============================}
Constructor TMatrix.Create;
var
i,j:byte;
begin
Inherited Create; //Создание родительского объекта
Randomize;
For i:=1 to 15 do
For j:=1 to 15 do
Matr[i,j]:=random(9); //Случайное заполнение
end;

Destructor TMatrix.Destroy;
begin
inherited;
end;

Function TMatrix.ChkPsswrd(pwd:string):boolean;
begin
if pwd=password then ChkPsswrd:=true; //Проверка пароля
end;

Procedure TMatrix.GenPass;
begin
password:=''; //Ни разу не глупо
password:=IntToStr(Matr[10,11]);
password:=password+IntToStr(Matr[7,7]); //С миру по нитке...
password:=password+IntToStr(Matr[5,12]);
password:=password+IntToStr(Matr[11,2]);
end;
{========================End of my class' methods==============================}

{ TMainForm }

procedure TMainForm.AcceptBtnClick(Sender: TObject);
begin
if Maskedit1.Text=MyMatrix.password then
begin
cc:=true;
timer1.Enabled:=False;
end;
end;

procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: boolean);
begin
CanClose:=CC;
If cc=true then TMyMatrix.Destroy;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
CC:= False;
end;

procedure TMainForm.FormShow(Sender: TObject);
var
i,j: byte;
LineBuffer: string;
begin
MyMatrix:=TMatrix.Create;
MyMatrix.GenPass;
Memo1.Lines.Clear;
linebuffer:='';
for i:=1 to 15 do
begin
for j := 1 to 15 do linebuffer:=LineBuffer+inttostr(MyMatrix.Matr[i,j])+' ';
Memo1.Lines.Add(linebuffer);
linebuffer:='';
end;
Timer1.Enabled:=True;
end;

procedure TMainForm.SecretLabelClick(Sender: TObject);
begin
SecretLabel.Caption:=MyMatrix.password;
end;

procedure TMainForm.Timer1Timer(Sender: TObject);
var
i,j: byte;
LineBuffer: string;
begin
ProgressBar1.Position:=ProgressBar1.Position-1;
if ProgressBar1.Position=0 then
begin
MyMatrix:=TMatrix.Create;
MyMatrix.GenPass;
Memo1.Lines.Clear;
linebuffer:=''; //так будет лучше для всех
for i:=1 to 15 do
begin
for j := 1 to 15 do linebuffer:=LineBuffer+inttostr(MyMatrix.Matr[i,j])+' ';
Memo1.Lines.Add(linebuffer);
linebuffer:='';
end;
ProgressBar1.Position:=30;
Timer1.Enabled:=True;
end;

end;

initialization
{$I unit1.lrs}

end.

Комментариев нет:

Отправить комментарий