Delphi - Regisztrációs adatbázist kezelő komponens

forráskód letöltése
A mellékelt példaprogramban készítünk egy RegistryDatabase nevű komponenst. Ennek segítségével a Windows regisztrációs adatbázisának kezelése nagymértékben leegyszerűsödik.

A jövőben nem lesz szükségünk arra, hogy a TRegistry osztályból változót deklaráljunk, létrehozzuk azt, hanem egyszerűen csak fel kell dobni a Form-ra a RegistryDatabase komponenst, beállítani a szükséges property-ket és már használható is. A komponens Delphi 4-hez készült. Némi korlátozással azonban Delphi 3-ban is használható. Ehhez törölni kell belőle azokat a részeket, mely metódusok még nem léteztek a Delphi 3-ban. Hogy melyek ezek az egyszerűen kiderül: meg kell próbálni telepíteni és lefordítani a mellékelt komponenst és a Delphi közölni fogja, hogy mit nem ismer. Delphi 4, illetve ettől nagyobb verzió számoknál már nincs ilyen gond.

A mellékelt példaprogram megnyitása előtt a RegistryDatabase.pas-ban lévő komponenst telepítenie kell a Delphi alá.

A komponens használata előtt a szükséges property-k beállítása után az Active property igazra állításával lehet megnyitni a regisztrációs adatbázist.

A RootKey property-ben adhatjuk meg, hogy a regisztrációs adatbázis mely fő kulcsán belül szeretnénk dolgozni.

A Key property-ben kell megadnunk azt a kulcsot, melyet használni szeretnénk, míg a Value property-ben kell azt nevet megadni, amelyik változót elérni kívánjuk az adott kulcs alatt.

Ha a CanCreate property igaz, akkor az Active property igazra állításakor, ha a Key-ben megadott kulcs még nem létezik, akkor létre lesz hozva.

Az ily módon hozzáfért változóból adatot kiolvasni, illetve írni bele az alábbi property-kkel lehet a változó típusától függően:
  • AsBoolean - logikai típusú változó esetén
  • AsCurrency - pénz típusú változó esetén
  • AsDate - dátum típusú változó esetén
  • AsDateTime - dátum és idő típusú változó esetén
  • AsFloat - lebegő pontos típusú változó esetén
  • AsInteger - egész szám típusú változó esetén
  • AsString - sztring típusú változó esetén
  • AsTime - idő típusú változó esetén

A bináris típusú adatok kezeléséhez ReadBinaryData és WriteBinaryData metódusokat használhatjuk.

A Key property-ben megadott még nem létező kulcsot a CreateKey függvény hívásával végezhetjük el, törölni pedig a DeleteKey függvénnyel lehet.

Szintén a Key property-ben megadott kulcs létezésének ellenőrzését az ExistsKey függvényhívással vizsgálhatjuk. Igaz visszatérési érték esetén az adott kulcs létezik.

Egy kulcs mozgatását egy másik pozícióba a MoveKey hívásával végezhetjük. Ez a Key property-ben megadott kulcsot mozgatja a paraméterként kapott új kulcs alá. Ha mozgatás helyett csak másolni szeretnénk, akkor a CopyKey eljárást használjuk.

Annak eldöntésére, hogy egy kulcsnak létezik-e alkulcsa a HasSubKeys függvény ad logikai típusú választ.

Egy bejegyzett változó törlését a DeleteValue függvény hívásával tehetjük meg. Ekkor a Key property-ben megadott kulcson található Value property-ben megadott nevű változó kerül törlésre a regisztrációs adatbázisból.

Hogy létezik-e egy változó már, azt az ExistsValue függvényhívással dönthetjük el.

Egy változót átnevezni a RenameValue eljárással lehetséges. Itt paraméterként kell megadni azt az új nevet, melyre szeretnénk megnevezni a Value property-ben megadott nevű változót.

Hogy egy adott kulcson milyen nevű változókat találhatunk, azt a ValueNames property-n keresztül lekérdezhetjük egy TStringList típusú változóba. Ekkor a TStringList tartalmazni fogja az összes létező változó nevét a Key property-ben meghatározott kulcs alatt.

Ehhez hasonlóan a KeyNames property-ből a kulcsok neveit tudjuk lekérdezni. Különbség viszont a ValueNames property-vel szemben, hogy itt akár meg is adhatunk tetszőleges számú kulcsot és ezzel létrehozhatjuk azokat a regisztrációs adatbázisba.

Egy változó méretét a ValueSize property-ből tudhatjuk meg, míg típusát a ValueType property szolgáltatja. Ez utóbbit TRegDataType típusban kapjuk meg.

Hogy az adott kulcs sztringje milyen hosszú lehet, azt a MaxSubKeyLen property mondja meg.

A változók számát az adott kulcson a NumValues property szolgáltatja, míg a változó nevének méretét a MaxValueLen property.

A legnagyobb tárolható adat mérete a MaxDataLen property-ből tudható meg.

Hogy az adott kulcsra időben mikor történt a legutolsó bejegyzés azt a FileTime property adja meg TDateTime típusban.

A LazyWrite, ComputerName property-k használata megegyezik a TRegistry osztályban található azonos nevű property-kkel.
Ugyanez igaz a következő metódusokra: ReplaceKey, RestoreKey, UnLoadKey, csupán annyi a különbség, hogy a komponensünk esetében nem kell paramétert megadni a metódus számára, mivel a szükséges értéket a Key property-ből megkapja, így csupán azt kell aktuális értéken tartanunk.

A SaveToFile eljárással a Key property-ben megadott kulcsot menthetjük el a FileName property-ben megadott állományba.

Visszatölteni egy kulcsot a LoadFromFile-al lehetséges, mely szintén a Key és FileName property-ket használja.

A ReadOnly property igaz értéke esetén a regisztrációs adatbázist csak olvasásra nyitjuk meg. Ekkor nem leszünk képesek annak tartalmát módosítani.