|
|
#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", иначе невозможно читать.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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. Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |