
10.09.2011, 01:29
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Не знаю, что должно получиться (я не пытался вникнуть в идею автора, а только "причесал"), но примерно так:
Код:
unit Unit13;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Mask, ComCtrls, StdCtrls;
type
TForm2 = class(TForm)
AcceptBtn: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
ProgressBar1: TProgressBar;
MaskEdit1: TMaskEdit;
SecretLabel: TLabel;
Timer1: TTimer;
procedure AcceptBtnClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SecretLabelClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
procedure Init;
end;
{==================================MyClass=====================================}
TMatrix = class
private
Password : String; //Пароль
Matr : array[1..15, 1..15] of Integer; //Матрица Пароля
public
constructor Create;
function ChkPsswrd(pwd : String) : Boolean; //Проверка пароля
procedure GenPass; //Генерация пароля
end;
{================================End of my class===============================}
var
Form2 : TForm2;
MyMatrix : TMatrix; //Объект моего класса
implementation
{$R *.dfm}
{================================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;
function TMatrix.ChkPsswrd(pwd : String) : Boolean;
begin
ChkPsswrd := pwd = password; //Проверка пароля
end;
procedure TMatrix.GenPass;
begin
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==============================}
procedure TForm2.FormCreate(Sender: TObject);
begin
Init;
Timer1.Enabled := True;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Assigned(MyMatrix) then
MyMatrix.Free;
end;
procedure TForm2.Init;
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;
end;
procedure TForm2.AcceptBtnClick(Sender: TObject);
begin
if MaskEdit1.Text = MyMatrix.password then
Timer1.Enabled := False;
end;
procedure TForm2.SecretLabelClick(Sender: TObject);
begin
SecretLabel.Caption := MyMatrix.password;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
var
I, J : Byte;
LineBuffer : String;
begin
if ProgressBar1.Position = 0 then
begin
if not Assigned(MyMatrix) then
MyMatrix := TMatrix.Create;
MyMatrix.GenPass;
Memo1.Lines.Clear;
Memo1.Update;
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;
end;
ProgressBar1.Position := ProgressBar1.Position - 1;
end;
end.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|