unit
Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, MaskEdit, ComCtrls;
type
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
public
end
;
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
;
var
MainForm: TMainForm;
CC:
boolean
;
MyMatrix:TMatrix;
implementation
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
;
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
.