Jeden raz hasło (rejestr)

0

Witam... ja już się poddaję, dostaje oczopląsu, po prostu nie wiem jak to zrobić :-[
PROBLEM:
Na początku programu ma być okienko na hasło.
Hasło zostaje podane, program rusza.
Kolejne uruchomienia programu są bez okna na hasło.
JAK CHCIAŁEM ZROBIĆ:
Przy pierwszym uruchomieniu i podaniu prawidłowego hasła, tworzy się klucz w rejestrze. Przy kolejnym uruchomieniu sprawdza czy klucz istnieje, jeżeli True to program rusza, jak False to prosi o podanie hasła, aby utworzyć klucz.
PYTANIE:
Jak to porządnie napisać?
Co prawda czytałem na ten temat artykuł, ale i tak nie wychodzi.
Tu podaję to co napiep.....m, a do czego już nie mam sił.

 var
Reg : TRegistry;
Password:string;

begin
  Reg:=TRegistry.Create;
begin
 try
   InputQuery('Hasło','                    PROSZĘ PODAĆ HASŁO:',Password);

  if Password='1' then
   Reg.OpenKey('Software\Film',True);
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
//end
if Password<>'1' then
 //else
   Application.Messagebox('Błędne hasło','Błąd', MB_IconHand + MB_ok);
 if Reg.Openkey('Software\Film',False)then
    Exit;
    end
 finally
 Reg.Free;
 end;
 end;
end.

Proszę o pomoc!

0
Const
 Poprawne = '1';
var
 Reg : TRegistry;
 Password:string;

begin
  Application.Initialize;

  Reg:=TRegistry.Create;
  Reg.OpenKey('Software\Film',True);
  if not (Reg.ValueExists('Haslo') and (Reg.ReadString('Haslo') = Poprawne)) then 
   begin
    InputQuery('Hasło','PROSZĘ PODAĆ HASŁO:',Password);
    if Password = Poprawne then
      Reg.WriteString('Haslo', Password)
    else
      if Application.Messagebox('Błędne hasło','Błąd', MB_IconHand + MB_ok) = idOk then Application.Terminate;
   end
  else Application.Terminate;

  Application.CreateForm(TForm1, Form1);
  Application.Run;

 Reg.Free;

end.

pisane w notatniku, wiec moga byc jakies byki

PS. Radziłbym hasło w jakiś sposób szyfrować, chcociażby metodą XORowania - ktoś może otworzyć exe'ka Hex Workshopem i po zawodach.

0

Z tego co widzę to nieźle namotałem, ale to mój "pierwszy rejestr".
Ikari twój kodzik działa, z tym że forma tylko pokazuje się na ułamek sekundy? ale i tak bardzo ci dziękuję [cya]

//Dopisane
Błędem było Application.Terminate;
Jeszcze raz dzięki [browar]

0

Ooooo...fajowo [hurra] to mi się bardzo przyda :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1