Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Разное
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #3  
Старый 10.09.2011, 01:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Не знаю, что должно получиться (я не пытался вникнуть в идею автора, а только "причесал"), но примерно так:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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 в.д.
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:57.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025