![]() |
|
|
#1
|
|||
|
|||
|
Не получается запустить! Не пойму в чем-то ошибка или что-то пропустил. Помогите.
Код:
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.Последний раз редактировалось Admin, 09.09.2011 в 22:31. |
|
#2
|
||||
|
||||
|
Заверни всё в тег "CODE", иначе невозможно читать.
|
|
#3
|
||||
|
||||
|
Не знаю, что должно получиться (я не пытался вникнуть в идею автора, а только "причесал"), но примерно так:
Код:
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. |