1. DELPHİ XE5
İLERİ SEVİYE PROGRAMLAMA
REGISTRY İşlemleri
XOR, SHL, SHL İşlemleri
Sistem Menüsü Oluşturma
Çalışma Zamanlı Komponent Oluşturma ve Olay Yazma
SQLite Veritabanı İşlemleri
2. REGISTRY İŞLEMLERİ
Registry
Windows’a ait teknik bilgilerin depolandığı yerin adı
“Registry” olarak bilinmektedir. Burada yer alan bilgiler çok
önemli olmakla beraber, kullanıcılar genellikle buradaki
ifadelerin ne oldukları hususunu pek bilmezler. Kullandıkları
paket programlar buraya defalarca değer girer ama
kullanıcının bundan haberi bile olmaz. Doğrusunu isterseniz
tehlikeli bir konu olmakla beraber uzman programcıların
bilmesi gereken bir konudur. Bu bölümde “Registry” ile ilgili
işlemlerinizi “Delphi” uygulamalarından nasıl
gerçekleştirebileceğinizi göreceğiz.
3. Öncelikle Registry yapısına nasıl ulaşabileceğinizi
gösterelim. Windows menüsünde yer alan “Start->Run”
seçeneklerini seçip açılan pencereye “Regedit” komutunu
girin. Aşağıdaki gibi Registry nizde yer alan ana rootların
gösterildiği pencereye ulaşacaksınız
4. Bir çoğunuz bilirsiniz “Windows 2000” işletim sisteminde
Registry’de kayıtlı beş (5) ana Root vardır.
HKEY_CLASSES_ROOT
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
HKEY_CURRENT_CONFIG
5. Bu Rootlardan istediğinize alt kalasör ekleyebilir,
istediğinizin içerisinden alt kalasörleri silebilirsiniz. Tabi ki bu
alt kalasörlere yazdırılmış değişken değerlerini öğrenip
değiştirme hakkınızda bulunmaktadır. Konumuzda “Registry”
içerisinde işlem yapabilmeniz için gerekli olan tüm açıklamalar
detaylı olarak verilmektedir.
Registry’ye programınızdan ulaşmak istiyorsanız uses
satırına “Registry” kütüphanesini eklemek zorundasınız.
Aşağıdaki kodları çalıştırabilmeniz için bu bu kütüphane
eklenmiştir
6. Registry’ye Veri Yazdımak
Registry’ye kayit eklemek için izlemeniz gereken adımlara
geçmeden önce tüm “Registry” işlemlerinizde kullanmanız
gereken bir yapıdan bahsetmek istiyorum. “Registry”
kütüphanesini “uses” satırına ekledikten sonra “Registry”
işlemlerinde kullanılmak üzere “Tregistry” tipli bir değişken
tanımlamak zorundasınız.
7. Daha sonra bu değişkeni kod bloğunuz içerisinde yer
alan “begin-end” arasında aşağıdaki şekilde yaratmalısınız.
8. Artık Registry işlemlerini yapmak son derece kolay.
“Registry” değişkenini yarattıktan sonra hangi Ana Roota
değer yazdıracağınızı belirtmelisiniz. Tüm ana Root isimleri
yukarıdaki kısımda verilmiştir. Bu isimlerden istediğinizi
kullanabilirsiniz.
• deger.RootKey
Bu özelliğe değeri yazdıracağınız veya okutacağınız ana Root un
ismini aktarabilirsiniz. Belirtilmesi kesinlikle zorunlu olan bir
özelliğidir. Aksi takdirde değişkeninize ait değeri yazdıracağı yeri
bilemeyeceği için sonuç başarısızlıkla sonuçlanacaktır.
9. • deger.OpenKey
Ana Root altındaki hangi klasöre değişken değerinin
yazdırılacağı (veya öğrenileceği) bu özellikle belirlenir. Birinci
parametre alt klasörü, ikinci parametrede yazdırma veya
değer öğrenme işlemini belirler. “True” değerinin aktarılması
yazdırma işleminin yaptırılacağı, “false” değerinin aktarılması
ise okuma işleminin gerçekleştirileceği anlamını taşımaktadır.
10. Burada dikkat etmeniz gereken bir husus daha var.
Oda birinci parametrede şayet alt klasörlerden bir tanesine
değişken değeri yazdırılacaksa ilk parametrede bu alt
kalsörlerin yolunu (‘AppEventsEventsLabels’) belirtmelisiniz.
Boş (‘’) string konulması Ana root a yaz anlamı taşımaktadır.
11. • deger.WriteString
“Registry” ye String değişken değeri yazdırmak için
kullanılan methoddur. Birinci parametresinde değişkenin
Registry’de tutulacağı ismi (daha sonra değeri okumak için bu
isim kullanılacaktır), ikinci parametrede yazdırılacak olan
string içeriği belirler (Bu bir string tip değişkende olabilir).
13. Şimdi “HKEY_CURRENT_USER” ana Root altına
“dershane” isminde bir değişken yazdıracağız. Değişkenin
içeriği de “Prestige Education Center” olacak.
15. Alt Klasöre Veri Eklemek:
Önceki örneğimizde AnaRoot altına değişken değeri
ekledik. Şimdi ise “HKEY_CURRENT_USER” Ana Root u altında
yer alan “AppEvents” klasörünün içerisindeki “Schemes”
klasörüne aynı değişkenin değerini yazdıralım.
17. Ana Root’a Alt Klasör Eklemek:
Ana Root a alt klasör eklemek için “CreateKey” methodu
kullanılır.
• deger.CreateKey
Parametre olarak girilen alt klasörleri oluşturmak için
kullanılan methoddur. Birden fazla klasörü aynı anda
ekleyebilirsiniz.
18. Programı çalıştırıp Button kontrolüne tıklarsanız
“HKEY_CURRENT_USER” ana Root u altında “Prestige”, onun
altında da “Gazi” isimli alt klasörlerin oluştuğunu göreceksiniz.
Kod çalıştıktan sonraki registry görüntüsü yukarıdaki
pencerede gösterilmiştir.
20. Registry’den Kayıt Okutmak:
“Registry” ye değer eklenebildiği gibi şimdi
bahsedeceğimiz yöntemlerle de herhangi bir klasördeki
değişkenin değerinide okutabilirsiniz. Değerini okuyacağınız
değişken ana root altında veya alt klasörlerden birinin
içerisinde bulunabilir. Her halükarda okutma yaptırabilirsiniz.
Değerini oğreneceğiniz değişken, windows tarafından
yazdırılabileceği gibi, sizin daha önceden eklemiş olduğunuz
bir değişken de olabilir. Yerini ve tipini doğru belirteceğiniz
tüm değişkenleri okutabilirsiniz.
21. Ana Root Altındaki Bir Değişkenin Değerini Öğrenmek:
Aşağıdaki şekilde “HKEY_CURRENT_USER” altında yer
alan “dershane” isimli değişkenin değerini okuyabilirsiniz.
• deger.ReadString
Registry’den değişken değeri okutmak için kullanılan
methoddur. Parametre olarak sadece okuyacağınız değişkenin
ismini girmek yeterli olacaktır.
23. Alt Klasörden Değişken Değeri Okutmak:
Ana Root tan değişken değeri okuyabileceğiniz gibi, alt
klasörde bulunan bir değişkenin değerinide aşağıdaki
yöntemle okutabilirsiniz.
24. Alt Klasör Silmek:
Registry’de bulunan bir alt klasörü silmek için
“DeleteKey” methodu kullanılmaktadır.
• deger.DeleteKey
Parametre olarak belirtilen alt klasörü silmek için
kullanılan methoddur.
25. Alt Klasör İçerisindeki Değişkeni Silmek:
• deger.DeleteValue
Alt Klasörün içerisindeki değişkeni silmek için
kullanılan methoddur. Parametre olarak sadece silinecek
değişkenin ismini girmek yeterli olacaktır.
26. Daha önce “HKEY_CURRENT_USER” Ana Rootu altında
oluşturduğumuz ‘PrestigeGazi’ klasörü içerisindeki
“dershane” isimli değişkeni silmek için aşağıdaki şekilde bir
kodlama kullanmalısınız.
27. Değişken değerlerinin iki sayısı veya kuvvetleriyle kolayca işlem
yapılabilmesini sağlayan komuttur (C++ bilenler için “>>” ve “<<”). Yaptığı
işleme gelince; solunda belirtilen sayıyla, sağında belirtilen sayıyı ikinin
kuvveti olarak kabul ederek çarpar. Aşağıdaki örneklendirmeyi dikkatlice
inceleyiniz.
SHL
28. “Shl” komutunun yaptığı işlem şudur. “a:=10 shl 3” satırı
“a:=10*23” ile aynı işi yapacaktır. Yani sağdaki sayıyı 2 nin üssü olarak
alacak solundaki sayıyla çarpacaktır (c++ da 3 bit sola ötele). Başka bir
örnek verelim.
SHL
29. XOR Operatörü
"Özel veya" operatörü iki operandı olan bir operatördür. Özel veya
operatörü aldığı operandlarının bütün bitlerini karşılıklı olarak "özel
veya(XOR)" işlemine tutar. İsterseniz bir çoğumuzun matematik
derslerinden hatırlayacağı "özel veya" yani XOR işleminin tanımını görelim.
Özel veya operatörü iki operand aldığı için dört farklı durum söz
konusudur. Bu durumlar ve sonuçları aşağıdaki tabloda belirtilmiştir.
operant1 operant2 operant3
1 1 0
1 0 1
0 1 1
0 0 0
30. Tablodan da görüldüğü özere XOR operatörünün sonucu ancak ve
ancak her iki operand da birbirinden farklıysa 1 değerini almaktadır. Bu
sonuç bize şifreleme algoritmasında büyük bir kolaylık sağlayacaktır. XOR
operatörü bitsel bir operatör olduğu için her iki operandın da ikili bir sayı
olması gerekir. C#’taki veri türleri ile XOR operatörü kullanıldığında veriyi
oluşturan her bir değişkenin bütün bitleri karşılıklı olarak XOR işlemine tabi
tutulur.
XOR Operatörü
37. Konumuzu anlatırken karşılaşılan bir problem üzerinden
gitmek öğrenmeniz açısından daha verimli olacaktır.
Bazen tasarım aşaması dışında çalışma anında da bileşen
oluşturmamız gerekebilir. Bileşen oluşturup herhangi bir
olayında tıklandığında kod işlemesini istediğimizde problem
ortaya çıkacaktır. Bunun için action'lardan faydalanabiliriz.
Bir tek bileşen için bu iyi bir çözüm olabilir. Fakat 20 buton
oluşturup tıklandıklarında ekrana captionlarını yazmasını
istediğimizde actionlardan 20 tane yapıp her birine mesaj
görüntüleme kodunu yazmamız gerekir.
ÇALIŞMA ZAMANI VE KOMPONENT OLUŞTURMA
38. Problemimizin çözümü için Tbutton sınıfından olan yeni bir
buton oluşturarak yeni özellikler kazandırabiliriz.
ÇALIŞMA ZAMANI VE KOMPONENT OLUŞTURMA
39. ÇALIŞMA ZAMANI VE KOMPONENT OLUŞTURMA
En üstte bulunan uses ve
interface bloğu sayfamıza
sığmadığı için göstermedik
ancak eklemeyi unutmayınız.
Ayrıca son iki satırdaki end;
bloklarını da ekleyiniz.
9. Satırımızda yeni bir buton
ekliyoruz. Klik adında yeni bir
prosedür atıyoruz. 30. Satırda
oluşturduğumuz butonların
onclick olayına bu yeni
prosedürümüzü atıyoruz.
Böylece sorunumuz ortadan
kalkıyor.
40. SQLite veritabanı işlemlerini örnek bir uygulamayla
anlatacağız. Bu uygulamamızda mobil bir uygulama
oluşturarak veritabanı işlemleri gerçekleştireceğiz.
Öncelikle uygulamamız için 1 Toolbar, 3 Button ve 1 Listview
ekliyoruz.
SQLİTE VERİTABANI İŞLEMLERİ
41. Veritabanı bağlantısı için gerekli olan elemanlarımız:
1. FDConnection
2. FDQuery
3. BindingsList
4. BindSourceDB
5. FDPhysSQLiteDriverLink
6. FDGUIxWaitCursor
SQLİTE VERİTABANI İŞLEMLERİ
42. Herhangi bir sorun çıkmaması için uses bloğumuza bu
kodları ekliyoruz. Çoğunu Delphi XE5 ekleyecektir. Eksik
olanları kontrol etmelisiniz.
SQLİTE VERİTABANI İŞLEMLERİ
43. 2 adet panel ve her birinin içine 1 tane label ve 1 tane edit
ekliyoruz.
SQLİTE VERİTABANI İŞLEMLERİ
44. Şimdi kod yazımına geçiyoruz. İlk yapacağımız ise USES
kısmına “System.IOUtils” kütüphanesini eklemek.
Veritabanı bağlantı işlemi için sol üsteki bağlan butonundan
var bloğumuza 2 adet değişken tanımlayacağız.
Begin blogunun altından başlayarak öncelikle veritabanı
yolumuzu Dbyol değişkenine kaydediyoruz.
SQLİTE VERİTABANI İŞLEMLERİ
47. Listview’in binding ayarlarını yapıyoruz:
SQLİTE VERİTABANI İŞLEMLERİ
Bağlantı butonu ile
işimiz bittiğine göre
artık kayıt ve silme
işlemine geçebiliriz.