Sayfa: [1]   Aşağı git
  Yazdır  
Gönderen Konu: Register Erişim  (Okunma Sayısı 677 defa)
0 Üye ve 1 Ziyaretçi konuyu incelemekte.
ALUCARD
Üye
*****

Rep: +2/-1
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 45



WWW
« : 30 Aralık 2005 02:35:41 »

Registry bilindiği gibi windowsun sistem bilgilerini tuttuğu  kendine has bir veritabanıdır. bu veritabanında windows bir çok çeşit bilgi tutabilir.bunlar...
   
  •       * işletim sistemi sistem bilgileri
          * sistemin donanım bilgileri
          * işletim sisteminde tanımlı bütün kullanıcıların bilgileri
          * işletim sistemine kululan yazılım bilgileri gibi daha bir sürü şey.....

       

     Delphi'de registry ayarlarına erişimek, okumak ve üzerinde değişiklik yapmak için eklenmesi gereken paket Registry paketidir. bunu projenin  uses kısmına eklemek gerekir.

 
Kod:
uses                         
         Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
         Dialogs,Registry;


  Bu paket eklendikten sonra projede artık register erişim için gereken kodlar kullanılabilir.

  * Registry'e bilgilerine erişim için kullanılan  windows editörüne erişmek için başlat/run ekranı açıldıktan sonra açılan ekranda 'regedit' yazıp enter'a basınız   

  * registry veritabanı aslında birbirinden bağımsız ayrı hiyerarşik veritabanlarından oluşur.bunlardan 2'si HKEY_LOCAL_MACHINE ve HKEY_USERS olanlardır. Diğerleri (HKEY_CLASES_ROOT,HKEY_CURRENT_USER,HKEY_CURRENT_CONFIG) aslında vu iki veritabanının işaretçilerini işaret eder. konuyu daha iyi anlamak için bunları windowstaki sürücüler olarak görebiliriz. bir kayda erişmek için sürücü seçiminden sonra tabiki yol bilgisini belirtmek gerekir.(örn: 'SOFTWARE\borland\delphi\7.0' gibi). Path belirtildikten sonra karşımıza anahtarlar çıkar. (örn: az önceki Path'te belirtilen yerde bulunan App anahtarı gibi) anahtarların bir ismi ve birde aldığı değer vardır. App anahtarının aldığı değer 'D:\Program Files\Borland\Delphi7\Bin\delphi32.exe' gibi. bir anahtarın değerini değiştirmek için anahtar üzerinde çift tıklamak gerekerir. çıkan ekranda değişiklik yapılabilinir.


DELPHİ'DEN ERİŞİM


  * öncelikli olarak okuma ve yazma işlemlerin yapılacağı bir Register değişkeni tanıtmak gerekir.bu değişken TRegistry sınıfından olmalı. değişkenimizin adı RegDosya olsun
           
Kod:
RegDosya: TRegistry;


  * Bu değişkeni kullanabilmek için proje içinde kullanılacağı yerde yaratmak gerekir.Bu işlem için
         
Kod:
  RegDosya  := TRegistry.Create;
kodu kullanılmalı

  * öncelikli olarak register'da okuma işlemi yapalım. bunun için seçilecek kovan veya sürücü veya veritabanı veya RootKey(her ne derseniz) için RegDosya değişkeninin RootKey özelliğine değer atayacağız.
           
Kod:
RegDosya.RootKey := HKEY_LOCAL_MACHINE;


  * RegDosya değişkeninin 'OpenKey'  fonksiyonu register yolunu belirtmek için kullanılır.
         
Kod:
  RegDosya.OpenKey('SOFTWARE\borland\delphi/7.0', True)

         anlaşılacağı gibi bu fonksiyonun ilk parametresi yolu belirtir. ikincisi ise belirtilen yolu bulmaması durumunda oluşturup oluşturmayacağına karar vermemizi sağlar. eğer True değeri verir isek bulmadığı takdirde bu yolu oluşturacaktır.

  * Belirtilen yolda istediğiniz anahtarın olup olmadığını kontrol etmek için RegDosya değişkeninin ValueExists fonksiyonu kullanılır.
       
Kod:
  if RegDosya.ValueExists('App') then
           begin
                ShowMessage(RegDosya.ReadString('App'));
           end;


  * Register anahtarlarının bir kaç çeşidi vardır. String anahtarların değerini öğrenmek için Regdosya değişkeninin ReadString fonksiyonu kullanılır. float  anahtarların değerini öğrenmek için ReadFloat veya Boolean bir değer için ReadBool funksiyonu kullanılır.

   
Kod:
       ShowMessage(RegDosya.ReadString('App'));


     kodunu yazdığınız an 'App' anahtarının değerini bize showmessage ile görüntüler. App değişkenin değeri Delphi 7.0 exe'sinin bilgisayarda bulunduğu yeri gösteriyor.

  * String Anahtarlara bir değer yazmak için WriteString , integer anahtara bir değer yazmak için Writeinteger fonksiyonları kullanılır.Diğer değişken türleride aynı mantıkla eşleşir.

     
Kod:
  if RegDosya.OpenKey('SOFTWARE\borland\delphi/7.0', False) then
              begin
                    RegDosya.WriteString('App',BENIMDOSYAM.exe');
              end;

       
      Eğer Belirtilen yolda 'App' diye bir değişken bulunmaz ise komut 'App' diye yeni bir anahtar oluşturur ve değerine 'D:\Delphi32.exe' varsa sadece değerini değişirir.

    NOT : örnek uygulama yaparken Register'ı bir anahtarı üzerinde değişiklik yapmayın. bu sisteminiz göçmesine neden olabilir. onun yerine kendinizin oluşturduğu anahtar ve yollar üzerinde oynayın.

    şimdi registerdan string bir değer okuma için fonksiyon ve registera yazma için procedure yazalım. çünkü yazma işleminde geri bir değer  döndürmesini istemediğimiz için fonksiyona gerek yok

    //-----önce kayıt okuma için fonkiyon

Kod:
    function OKUSTRING(str_HKEY: HKEY; str_Yol: String; str_Anahtar: String; strDefault:     
                                                 String): String;
    var
        RegDosya: TRegistry;
    begin
           RegDosya         := TRegistry.Create;
           RegDosya.RootKey := str_HKEY;

           Result            := strDefault;

           if RegDosya.OpenKey(str_Yol, True) then
           begin
                    if RegDosya.ValueExists(str_Anahtar) then
                    begin
                            result := RegDosya.ReadString(str_Anahtar);
                    end;

                    RegDosya.CloseKey;
           end;

     RegDosya.Free;
    end;
       


     //-----şimdi ise kayıt yazma için procedure yazalım


Kod:
     procedure YAZSTRING(str_HKEY: HKEY; str_Yol: String; str_Anahtar: String;
                                                    str_Yazilacak: String);
     var
           RegDosya: TRegistry;
     begin
             RegDosya     := TRegistry.Create;
             RegDosya.RootKey := str_HKEY;

             if RegDosya.OpenKey(str_Yol, True) then
              begin
                     RegDosya.WriteString(str_Anahtar, str_Yazilacak);
                     RegDosya.CloseKey;
              end;

           RegDosya.Free;
     end;




     //-----Bu fonksiyon ve procedure'ü aşağıdaki gibi kullanabiliriz


 
Kod:
   Str_Deger := OKUSTRING(HKEY_LOCAL_MACINE , 'HARDWARE\DESCRIPTION\SYSTEM' , 'SystemBiosDate' , '');

     YAZSTRING(HKEY_LOCAL_MACINE ,'SOFTWARE\EKOLOJI', 'TAKIM' ,'SINIDISI');
« Son Düzenleme: 05 Haziran 2006 13:42:03 Gönderen: Fatih » Logged

Delphi Dilinin Kemiği Yokki...

ASE YAZILIM
EMİN YAZILIM
Delphi Kitabı
*****

Sipariş ver..
Cvp: Register Erişim
« : 30 Aralık 2005 02:35:41 »

YcBinHecc
Yeni Üye
***

Rep: +0/-0
Offline Offline

Mesaj Sayısı: 6

bu üyenin avatarı yok

« Cevapla #1 : 05 Haziran 2006 12:49:49 »

   
   2005'te yazılmış bir thread için çok geç bir yazı oldu ama siteye sadece birkaç gündür üyeyim
geçenlerde sorduğum bir soru üzerine(sağolsun) Fatih arkadaşımız buraya bakmamı söyledi
ama anlamadığım bir kısım oldu(biraz acemiyim delphi'de).
   konuda write string procedure kısmında  "RegDosya      &nbs p;  := TRegistry.Create;"
bölümü var begin bloğunun hemen altında..Burdaki  "&nbs p;" nedir? Huh
ilgilenenlere tşk.
   
Logged
Fatih
Kurucu Üye
*****

Rep: +39/-10
Offline Offline

Cinsiyet: Bay
Mesaj Sayısı: 2.127



WWW
« Cevapla #2 : 05 Haziran 2006 13:44:53 »

Oranın registry ile ilgisi yok. html'de boşluk karakteerini temsil eder. kopyala yapıştır yaparken yanışlıkla  eklnmiştir.
mesajıı düzelttim
Logged

Yoksa siz hala kitabımı okumadınız mı Smile
YcBinHecc
Yeni Üye
***

Rep: +0/-0
Offline Offline

Mesaj Sayısı: 6

bu üyenin avatarı yok

« Cevapla #3 : 05 Haziran 2006 13:58:51 »

tşk Very Happy
Logged
Sayfa: [1]   Yukarı git
  Yazdır  
 
Gitmek istediğiniz yer:  

TinyPortal v1.0.5 beta 1© Bloc