Delphi′de TIniFile Ve TRegIniFile Bileşenleri
Delphi0 Mesaj
●48 Görüntüleme
- ReadBull.net
- Programlama ve Yazılım
- Programlama Dilleri
- Delphi
- Delphi′de TIniFile Ve TRegIniFile Bileşenleri
-
26-09-2019, 08:16:51TIniFile Yazdığınız programlardaki ayarları ya da saklamak istediğiniz verileri sistematik ve pratik bir şekilde saklayıp, istediğinizde de aynı rahatlıkla okumanızı sağlayacak bileşenimizin adı TIniFile. Hemen belirtelim bu bileşeni kullanmak icin "IniFiles" unit'ini programınıza dahil etmeniz gerekiyor. ".ini" uzantısına sahip dosyaları eğer notepad ile actıysanız koşeli parantezlerle belirtilen ana bolumlerin altında ceşitli değişkenler ve karşılarına eşittirden sonra yazılmış ceşitli değerler olduğunu gormuşsunuzdur. Eğer bunu hic yapmadıysanız acın bakın bir tanesine, oyleler . Burada koşeli parantezler arasında kalan kısım o "bolumun(section)" adı oluyor. Farklı bolumlerde aynı isimde değişkenler kullanılabiliyor. Ayrıca bu bolumler verileri kategorize etmenize de yarıyor. Bileşenimiz direk bir bolume ait herhangi bir değişkenin değerini okuyabildiği gibi size butun bolum adlarını, bir bolumun icindeki değişken adlarını, isim-değişken ciftlerini de ceşitli şekillerde verebiliyor. Yani oldukca esnek bir kullanım sozkonusu. Lafı daha fazla uzatmadan nasıl kullanıldıklarına bakalım... Oncelikle TIniFile tipide bir değişken tanımlıyoruz. ayarlar: TIniFile; Daha sonra bunu oluşturmamız gerekiyor. ayarlar:= TIniFile(dosyaadi); Buradaki "dosyaadi" string tipinde bir değişken veya direk elle girilen bir değer olabilir. Oluşturulacak veya okunacak ini dosyasının tam yolunu icermeli. Eğer bu isimde bir dosya yoksa oluşturulur ve yine dosya yoksa bile okuma işlemleri esnasında sorun cıkmaz merak etmeyin. Oraya da geliyoruz yavaş yavaş. Şimdi, once yazma işlemlerinden bahsedelim bence. Sonucta daha elimizde hazır bir dosya yok. Bu bileşen sık kullanılan bircok değişken tipini rahatca yazmaya yarayan fonksiyonlara sahip. String tipinde bir değer yazmak icin ayarlar.WriteString('bolum','değişkenadı',değer); Şeklinde bir fonksiyon kullanabilirsiniz mesela. Burada bolum yerine bolum adı, değişken adı yerine dosyadaki değişken adı ve değer yerine de yazılacak değeri koymalısnız. Buradaki tum parametreler sabit değerler olabileceği gibi string tipinde, gerekli bilgileri taşıyan değişkenler de olabilirler. String yazdırma dışında aynı şekilde kullanılan sadece sonundaki değer parametresi, yazacağı değişken tipine gore değişen WriteInteger, WriteBool, WriteDate, WriteDateTime, WriteTime, WriteFloat ve WriteBinaryStream fonksyionları var. Bunlardan sonuncu olanı KESİNLİKLE onermiyorum. Hem gereksiz yere boyutu arttırıyor hem de belirli bir boyuttan daha buyuk dosyalarla calışmıyor. Şimdi bu fonksiyonların okuma versiyonlarının bir orneğini gostereceğim, cunku yapı tamamen aynı. Sadece isimler ve tipler değişiyor. String okuma fonksiyonumuz okunan:=ayarlar.ReadString(bolum,değişkenadı,varsa yılan değer); Gorduğunuz gibi burada farklı olarak "varsayılan değer" bolumu var. Bu bolum eğer okumaya calıştığınız değişken herhangi bir sebepten yoksa(dosya yok, ilgili bolum yok, değişken yok) değer olarak buraya koyulan değeri donduruyor. Yani burada "okunan" isimli değişkene ya dosyadan okunan değer ya da boyle bir değer okunamadıysa varsayılan değer atanıyor. Yani dosyanın olup olmaması cok buyuk bir sorun değil . Butun diğer yazma fonksiyonlarının başındaki "Write" kısımlarını "Read" yapıp yukarıdaki kurala gore kullanabilirsiniz. Bir de coklu değer okumak icin kullanılan fonksiyonlar var. Mesela "ReadSection" fonksiyonu. ayarlar.ReadSection(bolumadı,liste); Bu fonksiyon, "bolumadı" ile belirtilen bolumdeki tum değişken isimlerini "liste" yerine vereceğiniz TStrings tipindeki yapıya kopyalar. ayarlar.ReadSections(liste); Bu fonksiyon "liste" ile verilen TStrings tipindeki yapıya dosyadaki bolum isimlerini kopyalar. ayarlar.ReadSectionValues(bolumadı,liste); Bu fonksiyon da "bolumadı" ile belirtilen bolumdeki "değişken=değer" ciftlerini "liste" yerine verdiğiniz TStrings yapısına kopyalar. Boylece fonksiyonlarımızın sonuna geldik. İşiniz bitince değişkeni serbest bırakmayı unutmayın. ayarlar.Free; TRegIniFile Bu tip de TIniFile'ın değerleri kayıt defterinde saklayan versiyonudur. Bunu kullanmak icin "Registry" unit'ini projenize dahil etmeniz gerekir. Kullanımında TIniFile'dan tek farkı bunu oluşturuken(create metoduyla) dosya adı yerine HKEY_CURRENT_USER ana anahtarı altında bir alt anahtar adı girmeniz gerekmesi. Bu istediğiniz kadar icerideki bir anahtar olabilir(orn: SoftwareMicrosoftWindows). Kayıt defteri ile daha detaylı bilgi icin "Windows" başlığı altındaki "Kayıt Defteri" yazı diziine bakabilirsiniz. Diğer tum fonksiyonlar ve kullanımları aynı. Yine işiniz bitince bunu da serbest bırakmalısınız. Kolay gelsin. __________________