Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2010, 12:22   #1
Дашкевна
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 10
Вопрос Пароль на форму и изменение пароля

Занялась конкретным изучением поролей в Delphi,но вот знаний немного не хватает!
подскажите как можно соединить эти два кода и сделать так чтоб при входе в программу стоял пароль при правильном вводе переходил на вторую форму и там можно было бы изменить пароль входа в программу



Код:

program Project1;

uses
  Forms, messages,dialogs,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {PasswordDlg};

{$R *.res}

begin
with TPasswordDlg.Create(Application) do
  begin
    try
       ShowModal;
    while (ModalResult=1)  and (Password.Text<>'123') do
      begin
         MessageDlg(' Пароль не верен! '+#13+#10
         +'Попробуйте еще раз.', mtWarning , [mbOK], 0);
          ShowModal;
       end;
      if ModalResult<>1 then Application.Terminate
     finally
      Free;
     end;
   end; 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.



unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, INIFiles;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  IniFile:TIniFile;
implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
//проверяем введенный пароль
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');

if Edit1.Text = IniFile.ReadString('Pass' , 'Secret password', Edit1.Text)then
Application.MessageBox('Пароль введен верно !!!','Информация',MB_OK or MB_ICONINFORMATION)
else
Application.MessageBox('Пароль введен НЕверно,попробуйте еще раз !!!','Предупреждение',MB_OK or MB_ICONWARNING);
Edit1.SetFocus;
Edit1.Text := '';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
//Очищаем поле ввода
Edit1.Text := '';
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
//Выводим форму изменения пароля
Form2.ShowModal;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
//Создаем INI файл для хранения нашего пароля в каталоге с программмой
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');
//Записываем пароль в файл
IniFile.WriteString('Pass' , 'Secret password', Edit1.Text);
//Откл. попытку повторно задать пароль
Button4.Enabled := False;
IniFile.Free;
//Выводим сообщение
Application.MessageBox('Пароль успешно создан и сохранен !!!','Создпние пароля',MB_OK or MB_ICONINFORMATION);
//Очищаем поле ввода
Edit1.Text := '';
//Вкл. кнопки
Button3.Enabled := True;
Button1.Enabled := True;
end;
procedure TForm1.Edit1Change(Sender: TObject);
begin
if IniFile = TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI') then
Button4.Enabled := False;
end;

end.
Дашкевна вне форума Ответить с цитированием
Старый 15.05.2010, 13:29   #2
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Самый простой пример
Вложения
Тип файла: rar pas.rar (3.5 Кб, 207 просмотров)
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 15.05.2010, 13:43   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Код:
program Project1;

uses
  Forms, messages,dialogs, inifiles, sysutils,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {PasswordDlg};

{$R *.res}
VAR
p:String;
begin
     with TIniFile.Create(ExtractFilePath(Paramstr(0))+'Pass.INI') do
     try
    //проверяем наличие файла Pass.INI в папке с программой
     if FileExists(ExtractFilePath(Paramstr(0))+'Pass.INI') then
    //если есть читаем значение из секции Pass значение параметра  Secret password в переменную p
     p:=ReadString('Pass' , 'Secret password','')
     //если файла нет то присваиваем переменной p значение '123' создаём фаил и записываем
     //в значение  секции Pass  параметра  Secret password '123'
          else
      begin
       p:='123';
        WriteString('Pass' , 'Secret password',p);
      end;
    finally
    Free;
    end;
 //создаём форму с запросом пароля
with TPasswordDlg.Create(Application) do
  begin
    try
       ShowModal;
    //проверяем если на форме нажата  кнопка ок и пароль не совпадает
    //то опять отображаем форму если нажата кнока ок и пароль совпадает
    //или нажата кнопка cancel то выходим из цикла
     while (ModalResult=1)  and (Password.Text<>p) do
      begin
         MessageDlg(' Пароль не верен! '+#13+#10
         +'Попробуйте еще раз.', mtWarning , [mbOK], 0);
          ShowModal;
       end;
// если нажата кнопка cancel или форма просто закрыта завершаем если нет то просто идём дальше
      if ModalResult<>1 then Application.Terminate
     finally
      Free;
     end;
   end;
 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

ну а как записать в ини файл по нажатию кнопки у вас есть

Последний раз редактировалось vovk; 15.05.2010 в 21:14.
vovk вне форума Ответить с цитированием
Старый 16.05.2010, 19:29   #4
Дашкевна
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 10
По умолчанию

спасибо за помошь,но вот у меня проблемка небольшая появилась

1.При попытке очистить Еdit3 и подтвердить новый пароль выдает вот такое окно:
http://www.fayloobmennik.net/29360

Код:
unit Unit3;

interface

uses
  Windows, Messages, IniFiles, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure Edit3Change(Sender: TObject);


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  IniFile:TIniFile;
  i:String;


implementation

uses Unit1;

{$R *.dfm}


procedure TForm3.Button1Click(Sender: TObject);
begin
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');
if Edit2.Text <> Edit3.Text then
Application.MessageBox('Новые пароли не совпадают!!!','Предупреждение',MB_OK or MB_ICONWARNING);
Edit2.Text := '';
Edit3.Text := '';
Edit2.SetFocus;

end;
procedure TForm3.Edit1Exit(Sender: TObject);
begin
//var i:String;
begin
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');
i:=IniFile.ReadString('Pass' , 'Secret password', Edit2.Text);
if Edit1.Text = PAnsiChar(i)then
Edit2.SetFocus
else
Application.MessageBox('Старый пароль введен не верно','Предупреждение',MB_OK or MB_ICONWARNING);
IniFile.Free;
end;
end;

procedure TForm3.Edit1Change(Sender: TObject);
begin
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');
end;


procedure TForm3.Edit3Change(Sender: TObject);
begin
 if Edit2.Text = Edit3.Text then
//Записываем новый пароль
IniFile := TIniFile.Create(extractfilepath(Application.ExeName) + '\Pass.INI');
IniFile.WriteString('Pass' , 'Secret password', Edit2.Text);
Application.MessageBox('Пароль успешно изменен !!!','Изменение пароля',MB_OK or MB_ICONINFORMATION);
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
Form3.Close;
IniFile.Free;
end;

end.
2.После нажатия ОК на окне с ошибкой,недоволен Application.Run

http://www.fayloobmennik.net/29366

Код:
program Project1;
uses
  Forms,
  messages,
  dialogs,
  inifiles,
  sysutils,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {PasswordDlg},
  Unit3 in 'Unit3.pas' {Form3};

{$R *.res}
VAR
p:String;
begin
     with TIniFile.Create(ExtractFilePath(Paramstr(0))+'Pass.INI') do
     try
    //проверяем наличие файла Pass.INI в папке с программой
     if FileExists(ExtractFilePath(Paramstr(0))+'Pass.INI') then
    //если есть читаем значение из секции Pass значение параметра  Secret password в переменную p
     p:=ReadString('Pass' , 'Secret password','')
     //если файла нет то присваиваем переменной p значение '123' и создаём и записываем
     //в значение  секции Pass  параметра  Secret password '123'
          else
      begin
       p:='123';
        WriteString('Pass' , 'Secret password',p);
      end;
    finally
    Free;
    end;
 //создаём форму с запросом пароля
with TPasswordDlg.Create(Application) do
  begin
    try
       ShowModal;
    //проверяем если на форме нажата  кнопка ок но пароль совпадает
    //то опять отображаем форму если нажата кнока ок и пароль совпадает
    //или нажата кнопка cancel то выходим из цикла
     while (ModalResult=1)  and (Password.Text<>p) do
      begin
         MessageDlg(' Пароль не верен! '+#13+#10
         +'Попробуйте еще раз.', mtWarning , [mbOK], 0);
          ShowModal;
       end;
// если нажата кнопка кcancel или форма просто закрыта завершаем если нет то просто идём дальше
      if ModalResult<>1 then Application.Terminate
     finally
      Free;
     end;
   end;
 
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm3, Form3);
  Application.Run;
end.
Дашкевна вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Delphi] Изменение пароля пользователя Рамик Помощь студентам 8 10.09.2019 23:46
Изменение данных в таблице через форму. Blah Blah Помощь студентам 2 07.04.2010 16:04
Одну и ту же форму использовать как MDI-child форму и как модальную форму? PrimaryPro Общие вопросы Delphi 2 10.03.2010 20:52
необходимо создать форму, которая открывается автоматически и просит ввести пароль и имя пользователя. мария2507 Microsoft Office Excel 2 07.02.2010 15:11
Пароль на изменение данных messi013 Общие вопросы Delphi 5 11.01.2010 21:43