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:
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;
- 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)
- 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'
- 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))
- 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
- 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:
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;
- 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.
- 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