|
||||||||||||
|
||||||||||||
|
|
#1 (Kalıcı Bağlantı) |
![]() ![]() ![]() ![]() ![]() ![]() |
TIniFile
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 için "IniFiles" unit'ini programınıza dahil etmeniz gerekiyor. ".ini" uzantısına sahip dosyaları eğer notepad ile açtıysanız köşeli parantezlerle belirtilen ana bölümlerin altında çeşitli değişkenler ve karşılarına eşittirden sonra yazılmış çeşitli değerler olduğunu görmüşsünüzdür. Eğer bunu hiç yapmadıysanız açın bakın bir tanesine, öyleler . Burada köşeli parantezler arasında kalan kısım o "bölümün(section)" adı oluyor. Farklı bölümlerde aynı isimde değişkenler kullanılabiliyor. Ayrıca bu bölümler verileri kategorize etmenize de yarıyor. Bileşenimiz direk bir bölüme ait herhangi bir değişkenin değerini okuyabildiği gibi size bütün bölüm adlarını, bir bölümün içindeki değişken adlarını, isim-değişken çiftlerini de çeşitli şekillerde verebiliyor. Yani oldukça esnek bir kullanım sözkonusu. Lafı daha fazla uzatmadan nasıl kullanıldıklarına bakalım... Öncelikle 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 içermeli. Eğer bu isimde bir dosya yoksa oluşturulur ve yine dosya yoksa bile okuma işlemleri esnasında sorun çıkmaz merak etmeyin. Oraya da geliyoruz yavaş yavaş. Şimdi, önce yazma işlemlerinden bahsedelim bence. Sonuçta daha elimizde hazır bir dosya yok. Bu bileşen sık kullanılan birçok değişken tipini rahatça yazmaya yarayan fonksiyonlara sahip. String tipinde bir değer yazmak için ayarlar.WriteString('bölüm','değişkenadı',değer); Şeklinde bir fonksiyon kullanabilirsiniz mesela. Burada bölüm yerine bölüm adı, değişken adı yerine dosyadaki değişken adı ve değer yerine de yazılacak değeri koymalısnız. Buradaki tüm 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 göre değişen WriteInteger, WriteBool, WriteDate, WriteDateTime, WriteTime, WriteFloat ve WriteBinaryStream fonksyionları var. Bunlardan sonuncu olanı KESİNLİKLE önermiyorum. Hem gereksiz yere boyutu arttırıyor hem de belirli bir boyuttan daha büyük dosyalarla çalışmıyor. Şimdi bu fonksiyonların okuma versiyonlarının bir örneğini göstereceğim, çünkü yapı tamamen aynı. Sadece isimler ve tipler değişiyor. String okuma fonksiyonumuz okunan:=ayarlar.ReadString(bölüm,değişkenadı,varsa yılan değer); Gördüğünüz gibi burada farklı olarak "varsayılan değer" bölümü var. Bu bölüm eğer okumaya çalıştığınız değişken herhangi bir sebepten yoksa(dosya yok, ilgili bölüm yok, değişken yok) değer olarak buraya koyulan değeri döndürüyor. Yani burada "okunan" isimli değişkene ya dosyadan okunan değer ya da böyle bir değer okunamadıysa varsayılan değer atanıyor. Yani dosyanın olup olmaması çok büyük bir sorun değil . Bütün diğer yazma fonksiyonlarının başındaki "Write" kısımlarını "Read" yapıp yukarıdaki kurala göre kullanabilirsiniz. Bir de çoklu değer okumak için kullanılan fonksiyonlar var. Mesela "ReadSection" fonksiyonu. ayarlar.ReadSection(bölümadı,liste); Bu fonksiyon, "bölümadı" ile belirtilen bölümdeki tüm 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 bölüm isimlerini kopyalar. ayarlar.ReadSectionValues(bölümadı,liste); Bu fonksiyon da "bölümadı" ile belirtilen bölümdeki "değişken=değer" çiftlerini "liste" yerine verdiğiniz TStrings yapısına kopyalar. Böylece 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 için "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 içerideki bir anahtar olabilir(örn: Software\Microsoft\Windows). Kayıt defteri ile daha detaylı bilgi için "Windows" başlığı altındaki "Kayıt Defteri" yazı diziine bakabilirsiniz. Diğer tüm fonksiyonlar ve kullanımları aynı. Yine işiniz bitince bunu da serbest bırakmalısınız. Kolay gelsin. |
|
Statü: Çevrimdışı
|
|
| Google Reklamları |