IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

Práca so systémovými register - prihlasovací program

Dnes si ukážeme Ako pracovať v Delphi (Alebo Lazarusa) so systémovými registrov. Nebudem tu rozoberať teórií, tá už bola na tajte stránke slušne rozobrana tú.

Prácu s chlapci si ukážeme na príklade jednoduchého programu, do registrovať bude zapisovať prihlasovacím meno a heslo. Náš program sa skladá z dvoch Unit-ov, v prvo unite sa budeme zaoberať registráciám a v druhom samotným prihlásením.

Registrácia (Unit1)

Na formulár si vložíme 3x editačné polia a 1x button. Používané označenie vychádza z tohto:

unit1 - Delphi

Kedze chceme samozrejme spolupracovať Medzi Týmito dvoma Unit vložíme do uses 'Unit2', a bude nam treba ai knižncu 'registre'

uses
  ..., registry, Unit2;

Následne ideme do procedúry Button1Click. Pre prácu s registrom nám treba deklarovať premennú, ktora je triedy TRegistry, ja si ju nazvom 'reg'. Teraz si ukážeme celý kód tajte procedúry a následne ho vysvetlíme.

procedure TForm1.Button1Click(Sender: TObject);
var reg: TRegistry;     // deklaracia premennej pre pracu s registrami
    meno, heslo: string;
begin
  meno:=edit1.text;         // vstup ukladame ako prihlasovacie meno

  if (edit2.text = edit3.text) then     // ako je dobrym zvykom, pri registracii sa zadavaju hesla dva krat,tu kontrolujeme zhodu.
    heslo:=edit3.text           // vstup ukladame ako heslo
  else begin
    MessageDlg('Heslá sa nezhodujú', mtWarning, [mbOK], 0);   //ak sa nezhoduju, vypise varovnu hlasku a ukonci proceduru
    exit;
  end;

  Reg:=TRegistry.Create(KEY_WRITE);                 // 1.
  try                                   // 2.
    Reg.RootKey := HKEY_CURRENT_USER;                   // 3.
    if Reg.OpenKey('\Software\Devbook\skuska\', True) then      // 4.
      reg.WriteString(meno,heslo);                  // 5.
  except                                // 6.
    MessageDlg('Kľúč sa nepodarilo otvoriť', mtWarning, [mbOK], 0); // 7.
    exit;                               // 8.
  end;                                  // 9.
                                    // 10.
  reg.CloseKey;                             // 11.
  reg.free;                             // 12...
  MessageDlg('Registrácia prebehla úspešne', mtInformation, [mbOK], 0);
  form2.show;
  form1.hide;
end;
  1. Najprv si pre premennú 'reg' vytvoríme objekt triedy TRegistry. Parameter Create () určuje čo sa chystá zo súborom, mozem nadobudnem 3 základné hodnoty: KEY_READ (pre čítanie), KEY_WRITE (pre zapisovaním) a tak isto mozem ostat prázdna, v takom pripade ŠÚ právomoc nastavenej na KEY_ALL_ACCESS (teda READ ai WRITE)
  2. Riadky 2, 6 a 9 ŠÚ Súčasti príkazu 'try finally except' ... ten sa zvykne používať s registrom aby pri neúspešnej prácu s registrom program nepadal ale splnil 'except'
  3. Nastavujeme RootKey, teda mozme povediete Niečo Ako domovský adresár, zvykne sa používať HKEY_LOCAL_MACHINE Alebo moja obľúbenejšie je HKEY_CURRENT_USER. (Mozte si to cele Prejsť sami pomocou tlačidla win + r otvoriťe okno 'spustiť' -> regedit (enter))
  4. V tomto riadku testujeme otvorenia chlapci na adrese \ Software \ Devbook \ skuska \ pri čom softvér je už existujúci "pod zložka" HKEY_CURRENT_USER. Od teraz pracujeme v tajte zložka 'skuska'. Kludne mozte Napísať za Softvér hoci akú cestu, pretoze druhý parameter OpenKey určuje či sa má kľúč vytvoriť a k ešte neexistuje, mozem nadobudnem hodnoty True Alebo False
  5. Ak bolo Otvorenie úspešné, zapíše do registra kľúč s názvom meno a hodnotou heslo. Tak Ako tu je použitá funkciám WriteString, sa používaj hľa ďalším funkciám, ktorych názov je odvodnenia od typu hodnoty. Teda: WriteString, WriteInteger, WriteBool, WriteFloat ...

Riadky 7 a 8 sa splníte ak sa telo 'try' nepodari splniť, teda mozme povedie že except je akousi alternatívou pre else

11. Tak ako sme kľúč otvorili pomocou OpenKey, by sme ho mali na záver práce Zavrieť a následne (Riadok 12.) Uvoľniť premennú.

Na konci mozme vidiet, že ak bolo všetko správne splnenie tak sa nám tento form schová a ukáže druhý, prihlasovací form.

Prihlásenie a mazanie (Unit2)

Na formulári máme 2x editačné polia a 1x button. Používané označenie vychádza z tohto:

unit2 - Delphi

Nesmieme Zabudnutá vložiť 'registre' do uses.

Budeme znovu pracovať v procedúra Button1Click

procedure TForm2.Button1Click(Sender: TObject);
var reg: TRegistry;
    heslo: string;              // ... premennu na meno nam nebude treba
begin
  reg:=TRegistry.Create(KEY_READ);      // vytvorenie kluca s pravami pre citanie
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey('\Software\Devbook\skuska\', True) then
      heslo:=reg.ReadString(edit1.text);    // citanie hodnoty kluca s nazvom z edit1 sa uklada do premennej heslo
  finally                       // ... plati to iste ako pri WriteString
  end;

  if (heslo = edit2.text) then begin        //porovnavame heslo z registru s napisanym heslom v edit2
    if MessageDlg('Prihlásenie prebehlo úspešne, prajete si vymazať registry vytvorene týmto programom ?', mtInformation, [mbYes,mbNo], 0) = mrYes then  //1.
      reg.DeleteKey('\Software\Devbook\skuska\');               //2.
  end
  else
    MessageDlg('Nesprávne meno alebo heslo', mtWarning, [mbOK], 0);
  reg.CloseKey;
  reg.free;
end;
  1. Ak sa HESLO zhodujú vypíšeme Víťazný hlášku a opýtame sa na vymazaním použitých registrovať, messagedlg testujeme, ak sa stlačí Yes, pokračuje sa k riadku 2., ak nie pokračuje sa k uzavretiu a uvoľnením chlapci.
  2. Tento príkaz vymaže čelu zložka 'skuska' ai s ho obsahom, teda s chlapci, ktore tam náš program uložil. Parameter funkciám je cesta k prešibanému chlapci. Ak sa Vám podarí naučiť tento príkaz, tak gratulujem, ste lepší Ako 3/4 software-ového priemyslu okolesníkom skoro žiadnemu programu sa nechce mazať po seba registre, ktore sa postupne nabaľujú a spomaľujú chod Vášho stroja.

A to je všetko zo základu práce so systémových registrov ...


 

Stiahnuť

Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami

Stiahnuté 314x (12.44 MB)
Aplikácia je vrátane zdrojových kódov v jazyku Delphi

 

Predchádzajúci článok
Záverečný register
Všetky články v sekcii
Delphi
Článok pre vás napísal expoox
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Aktivity