Научная работа

DELPHI: СТАВИМ ПАРОЛЬ НА ПРОГРАММУ
Сазонов Д.О.


Несколько раз за последнее время ко мне обращались с просьбой рассказать как ставить на программу пароль т.е. как сделать так, чтобы перед запуском программу появлялась заставка спрашивающая пароль и если пароль введен верно то, программа выполнялась иначе закрывалась. Причем пароль должен быть в виде звездочек (как и везде).
Раз про это спрашивают я решил этот выпуск посветить данному вопросу и рассказать как это делается.

Для начала создаем две формы: form1 - будет наша основная программа, а form2 - форма, где высвечивается пароль!

Далее в Project сделаем пару изменений:
Вот таких:
 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  unit2.form2.show;
  repeat
  application.ProcessMessages;
  until unit2.pass;
  unit2.form2.close;

  Application.Run;
 

Form2 - должна быть уже соответствующе оформлена. Должно быть поле для ввода пароля по крайней мере.
Далее необходимо заполнить саму form2.

var
  Form2: TForm2;
  p:string;
  pass:boolean;
implementation

{$R *.DFM}

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
{осуществляется перехват клавищ: истенные значения сохраняются
а то что было заменяется на *}
if key=#8 then delete(p,length(p),1) else begin
                                           p:=p+key;
                                           key:='*';
                                          end;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
pass:=false; {равно true - если пароль набран провельно}
keypreview:=true; {Позволяет перхватывать клавиши в приложении}
form2.caption:='Введите пароль:'; {Заголовок окна}
edit1.text:=''; {Очищаю поле edit}
position:=poScreenCenter; {форма появляется в центре экрана}
end;
 

procedure TForm2.Button1Click(Sender: TObject);
begin
if p='123' then pass:=true; {пароль будет 123
На самом деле лучше в этом месте истинный пароль защифровать}
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not pass then halt; {Если форму закрыли, а пароль ввели неправельно
то закрыть и все приложение иначе только форму}
end;

end.

Тут вам должно быть все понятно, ну а form1 вы заполняете по своему усмотрению.
Напоследок хочу лишь обратить внимание на метод
application.ProcessMessages - он нужен в пустых циклах, чтобы ваша программа не зависала, а могла пока ждет обслуживать и события других программ.