İleri seviye programlama 2

49
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

Upload: caner-bovatekin

Post on 24-Jul-2015

178 views

Category:

Education


6 download

TRANSCRIPT

Page 1: İleri Seviye Programlama 2

DELPHİ XE5İLERİ SEVİYE PROGRAMLAMA

REGISTRY İşlemleriXOR, SHL, SHL İşlemleri

Sistem Menüsü OluşturmaÇalışma Zamanlı Komponent Oluşturma ve Olay Yazma

SQLite Veritabanı İşlemleri

Page 2: İleri Seviye Programlama 2

REGISTRY İŞLEMLERİ

RegistryWindows’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.

Page 3: İleri Seviye Programlama 2

Ö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

Page 4: İleri Seviye Programlama 2

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

Page 5: İleri Seviye Programlama 2

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

Page 6: İleri Seviye Programlama 2

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.

Page 7: İleri Seviye Programlama 2

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.

Page 8: İleri Seviye Programlama 2

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.

Page 9: İleri Seviye Programlama 2

• 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.

Page 10: İleri Seviye Programlama 2

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 (‘AppEvents\EventsLabels’) belirtmelisiniz. Boş (‘’) string konulması Ana root a yaz anlamı taşımaktadır.

Page 11: İleri Seviye Programlama 2

• 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).

Page 12: İleri Seviye Programlama 2

• deger.WriteInteger-deger.WriteDate-deger.WriteCurrency Yazdıracağınız değişkenin tipi String tip değilse size

uyan yukarıdaki methodlardan bir tanesini kullanmalısınız. Kodlamada aynı mantık geçerli olacaktır. • deger.CloseKey

İşleminiz bittikten sonra “Registry” tipli değişkeninizi muhakkak bu komutla kapatmalısınız.

Page 13: İleri Seviye Programlama 2

Ş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.

Page 14: İleri Seviye Programlama 2
Page 15: İleri Seviye Programlama 2

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.

Page 16: İleri Seviye Programlama 2
Page 17: İleri Seviye Programlama 2

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.

Page 18: İleri Seviye Programlama 2

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.

Page 19: İleri Seviye Programlama 2
Page 20: İleri Seviye Programlama 2

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.

Page 21: İleri Seviye Programlama 2

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.

Page 22: İleri Seviye Programlama 2
Page 23: İleri Seviye Programlama 2

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.

Page 24: İleri Seviye Programlama 2

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.

Page 25: İleri Seviye Programlama 2

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.

Page 26: İleri Seviye Programlama 2

Daha önce “HKEY_CURRENT_USER” Ana Rootu altında oluşturduğumuz ‘Prestige\Gazi’ klasörü içerisindeki “dershane” isimli değişkeni silmek için aşağıdaki şekilde bir kodlama kullanmalısınız.

Page 27: İleri Seviye Programlama 2

Değişken değerlerinin iki sayısı veya kuvvetleriyle kolayca işlemyapı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

Page 28: İleri Seviye Programlama 2

“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

Page 29: İleri Seviye Programlama 2

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

Page 30: İleri Seviye Programlama 2

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ü

Page 31: İleri Seviye Programlama 2

XOR operatörlerinin kullanım türlerini aşağıdaki örnekte görmekteyiz.

XOR Operatörü

Page 32: İleri Seviye Programlama 2

SİSTEM MENÜSÜ OLUŞTURMA

Page 33: İleri Seviye Programlama 2

SİSTEM MENÜSÜ OLUŞTURMA

Page 34: İleri Seviye Programlama 2

SİSTEM MENÜSÜ OLUŞTURMA

Page 35: İleri Seviye Programlama 2

SİSTEM MENÜSÜ OLUŞTURMA

Page 36: İleri Seviye Programlama 2

SİSTEM MENÜSÜ OLUŞTURMA

Page 37: İleri Seviye Programlama 2

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

Page 38: İleri Seviye Programlama 2

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

Page 39: İleri Seviye Programlama 2

Ç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.

Page 40: İleri Seviye Programlama 2

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İ

Page 41: İleri Seviye Programlama 2

Veritabanı bağlantısı için gerekli olan elemanlarımız:1. FDConnection2. FDQuery3. BindingsList4. BindSourceDB5. FDPhysSQLiteDriverLink6. FDGUIxWaitCursor

SQLİTE VERİTABANI İŞLEMLERİ

Page 42: İleri Seviye Programlama 2

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İ

Page 43: İleri Seviye Programlama 2

2 adet panel ve her birinin içine 1 tane label ve 1 tane edit ekliyoruz.

SQLİTE VERİTABANI İŞLEMLERİ

Page 44: İleri Seviye Programlama 2

Ş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İ

Page 45: İleri Seviye Programlama 2

Connection ayarlarını yapıyoruz:

SQLİTE VERİTABANI İŞLEMLERİ

Page 46: İleri Seviye Programlama 2

Veritabanını oluşturduktan sonra tablomuzu oluşturuyoruz:

SQLİTE VERİTABANI İŞLEMLERİ

Page 47: İleri Seviye Programlama 2

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.

Page 48: İleri Seviye Programlama 2

Kayıt butonu için kodlarımız:

SQLİTE VERİTABANI İŞLEMLERİ

Page 49: İleri Seviye Programlama 2

Sil butonu için kodlarımız:

SQLİTE VERİTABANI İŞLEMLERİ