Bilgisayar - Yazılım - Delphi

Uzantı Açılımı Açıklama (DCU Delphi Compiled Unit)
Delphi Derlenmiş Birimi
Derleme sırasında bir Pascal dosyasının derlenmesi sonucunda oluşur. Kaynak kodu olmadığı zaman derleme için bunu kullanabilirsiniz. DFM Delphi Form File
Delphi Form Dosyası
Bir formun veya veri modülünün ve içerdiği bileşenlerin özelliklerinin tanımlarını içeren ikilik dosya. Geliştirme sırasında oluşturulur. ~DF Delphi Form Dosyası(DFM) Yedeği. DOF Delphi Options File
Delphi Seçenekler Dosyası
Proje seçeneklerinin mevcut ayarlarını içeren bir metin dosyası. Geliştirme sırasında oluşturulur. Delphi 1'de uzantısı OPT idi. DPR Delphi Proje Dosyası Geliştirme sırasında oluşturulan bu dos-ya gerçek Pascal kaynak kodu içerir. ~DP Delphi Proje Dosyası (DPR) yedeği. DSK Masaüstü dosyası Bu dosya pencerelerin konumları,editördeki açık dosyalar ve diğer masaüstü ayarları hakkında bilgiler içerir. Projeyi yeni bir dizine kopyalarken silmeniz gerekir. PAS Pascal dosyası Bir pascal biriminin kaynak kodu, bir formla ilgili veya bağımsız bir birim. ~PA Pascal dosyası (PAS) yedeği. RES Resource (Kaynak) dosyası Proje ile ilgili ve genellikle simgesini içeren ikilik dosya. Bu türden başka dosyalarda projeye ekleyebilirsiniz. BPG Borland Project Group Birden fazla projeyi ayni anda derlemek için kullanılır. CFG Proje seçeneklerini içeren ayar dosyası. Sadece özel derleyici seçenekleri ayarlandığı zaman oluşur. DPK Delphi Package Bir paketin kaynak kodunu içerir. TLB Type Library
Tip Kütüphanesi OLE Server uygulamaları için Type Library Editor tarafından otomatik olarak oluşturulan bir dosyadır. TODO Tüm projedeki yapılacak isler listesini içeren dosya ULD Microsoft Data Link ADO tarafından bir veri tedarikçisine gönderme yapmak için kullanılır. BDE'deki alias'a benzer. DEM Delphi Edit Mask Düzenleme maskeleri için ülkelere özgü formatlar içerir.

VERİ TABANI
Delphi'nin tercih edilmesinin en büyük nedenlerinden biriside iyi bir veritabanı desteğine sahip olması ve veritabanı programı yazmayı son derece kolaylaştırmasıdır. Hatta Delphi ile hiç kod yazmadan bir veritabanı programı yapabilirsiniz. Ancak buna rağmen veritabanı programı yaz-mak zor ve tecrübe isteyen bir istir. Burada her şeyin anlatılması mümkün değil. Elimizden geldiği kadar veritabanının genel olarak yapısını ve veritabanı programcılığının temelini anlatmaya çalışacağız.
Delphinin bildiğiniz gibi 3 sürümü var. Standart, Profesyonel ve Client/Server (C/S). Bu sürüm-lerin sunduğu veritabanı destecide farklı. Profesyonel sürüm standart sürümden daha iyi verita-banı desteği ve araçları sunuyor, C/S ise profesyonelden daha iyi.
Database ile uğraşırken bir çok terim ile karsılaşacaksınız. BDE, SQL, client, server, table, query vs. Bunları fazla problem etmeyin. Bunları zamanla öğrenirsiniz.
Veritabanını, verilerin depolandığı tablolar seklinde düşünebiliriz. Tablolar ise ad, soyad, telefon gibi alanlardan (field) oluşur. Bu alanların tamamı ise bir kayıtı (record) oluşturur.
Veritabanı tek tablodan oluşabileceği gibi birden fazla tablodan da oluşabilir. Yüzlerce tabloya sahip veritabanlarınız olabilir. Yine bu tablolarda 100 kayıt tutabileceğiniz gibi milyonlarca kayıtta tutabilirsiniz.
Indeksler(index) veritabanlarını hızlandırmak için kullanılır. Bir tabloda bir veya birden fazla indeks olabilir. Indeksleri seçerken en çok işlem yaptığınız alanları seçmeniz iyi olacaktır. Mesela raporlarınızı daha çok tarihe göre ve il bazında alıyorsanız tarih ve il_kodu alanlarını index tanımlamalısınız.
Tablolarda alan(field) ve kayıt(record) karıştırmamanız lazım. Mesela ad, soyad, telefon ve adres'ten oluşan bir tablonuz var. Bunu bir excel sayfası olarak düşünebilirsiniz.
AdSoyadTelefonAdresAliAkin0 216 123 45 67....ZaferYildirim0 212 123 45 67...gibi. Burada yukarıdan aşağı doğru olan kolonlar alan’dır. Yani ad alanı, soyad alanı gibi. Soldan sağa doğru olan sütunlar ise kayıttır. Yani (Ali, Akın, 0 216 123 45 67, ...) bir kayıttır.
Veritabanları etkin kayıtın yerini göstermek için kürsör(cursor) denen bir yapı kullanırlar. Mesela siz programla Zafer Yıldırım isimli kayıtı görüntülediğiniz zaman veritabanında kür sor bu kayıtı gösterir.
Birde dataset kavramı var. Dataseti söyle açıklayabiliriz: Birden çok tablodan elde ettiğimiz veri topluluğu. Mesela müşterilerinizin adini ve adresini sakladığınız bir tablo, siparişlerini sakladığınız bir tablo ve siparişlerin detayını sakladığınız bir tablo olmak üzere 3 tablonuz var. Siz Ali Tas isimli müşterinin Ocak ayında yaptığı siparişlerin ayrıntılarını görmek istiyorsunuz. Bu 3 tablodan da veri alırsınız. Bu bir dataset olur.

Lokal ve C/S veritabanları
Veritabanlarını iki kısımda ele alabiliriz. Lokal veritabanları ve C/S veritabanları.
Lokal veritabanları tek bir makinede çalışmak üzere tasarlanmış veritabanlarıdır. Bu verilere sadece sizin programınız erişecek ve başkaları bu verilere erişmeyecekse lokal veritanını kullanabilirsiniz. Paradox, dBase ve Access lokal veritabanlarıdır.
C/S Veritabanları: Veritabanınız bir server üzerinde durur ve birden fazla kullanıcı (client) bu verilere erişir ve işlem yapar. C/S veritabanları bir kayıta birden fazla kişinin ayni anda erişmesi gibi olayları kendileri kontrol ederler ve bu tip durumların üstesinden nasıl geleceklerini bilirler. Interbase, Oracle, SQL Server, Sybase, Informix, DB2 kullanılan C/S veritabanlarıdır.
C/S veritabanlarının bir dezavantajı veritabanını kullanan kullanıcı basına para ödemenizdir. Şirketler burada iki farklı lisans yöntemi sunuyorlar. Birincisi kullanan kullanıcı başına para ödüyorsunuz (per seat). 40 tane kullanıcınız(client) varsa 40 client lisansı almalısınız. Diyelim ki kullanıcı sayınız arttı ve 50 oldu. 10 tane daha client lisansı almanız gerekir. İkinci bir yöntem ise veritabanına ayni anda kaç kullanıcı bağlanıyorsa o kadar lisans almaktır (per connection). Mesela 100 kullanıcınız veritabanını kullanıyor ancak ayni anda en fazla 30 kişi veritabanına bağlanıyorsa 30 lisans almalısınız.
C/S veritabanları içinde su anda Oracle en iyisi. Onun dışında Türkiye piyasasında SQL Server'da çoğunlukla kullanılmakta. Benim tercihim Oracle'dan yana. Eğer C/S veritabanlarında kendinizi geliştirmek istiyorsanız Oracle veya SQL Server seçin.
Lokal veritabanları ile da birden çok kullanıcının kullandığı programlar yazmak mümkün. Ancak çoğu şeyi programla halletmeniz gerekiyor. Genellikle de problemler çıkmakta.

Tek katmanlı, iki katmanlı ve çok katmanlı database yapıları
Tek katmanlı(single-tier): Genel olarak lokal veritabanları tek katmanlıdır. Tek katmanlı yapıda program veritabanına direk ulaşır ve yapılan işlemler (kayıt ekleme, kayıt silme, değiştirme) anında gerçekleştirilir.
İki katmanlı(two-tier): Burada program client tarafında çalışır. Client tarafında çalışan program gerekli sürücüleri kullanarak serverdaki veritabanına ulaşır.
Çok katmanlı(multi-tier): Burada program yine client tarafında çalışır. Program database server'la direk bağlantı kurmaz. Server tarafında çalışan bir application server ile bağlantı kurar. Bu yapı genellikle güvenlik ve hız amacıyla kullanılır.

BDE (Borland Database Engine)
BDE Delphi'nin lokal ve C/S veritabanlarına bağlanmak için kullandığı dll ve uygulamalardır. C/S veritabanlarına bağlanmak için Delphi'nin C/S sürümünü kullanmak zorundasınız. Bu sürümle birlikte gelen SQL Links, BDE tarafından C/S veritabanlarına bağlantı için kullanılır.

Delphi BDE gibi bir yapıyı niye kullanıyor?
Normalde veritabanlarının yapıları ve API'leri farklı farklıdır. BDE programcıyı tüm bu yapıları öğrenmekten kurtararak daha üst düzey komutlarla program yapımına imkan tanır.
Delphi ile gelen sürücüler kullandığınız Delphi sürümüne göre değişir. Delphinin tüm sürümleri ile Paradox ve dBase bağlanmayı sağlayan sürücüler gelir. Bu sürücüler STANDART olarak adlandırılır ve paradox ve dBase ile yapacağınız tüm işlemleri yapmanızı sağlar. Delphi'nin C/S sürümü ile Oracle, SQL Server, Interbase, Sybase, Informix gibi C/S veritabanlarına bağlanmanızı sağlayacak sürücülerde gelir.

Alias (Takma isim/Rumuz)
Alias'lar veritabanlarına bağlantı ve bağlantının özelliklerini ayarlamak için kullanılır. Bir alias BDE'ye hangi tür bir veritabanına bağlanacağı, veritabanı dosyalarının diskte nerede olduğu gibi bilgileri bildirir. Ayrıca eğer C/S bir veritabanı kullanıyor iseniz açılış modu, kullanıcı ismi, BLOB alanların büyüklüğü gibi verileri BDE'ye bildirir.

Lokal veritabanları için Alias oluşturma
1. BDE Administrator programını çalıştırın.
2. Object menüsü altından New... komutunu verin veya klavyeden Ctrl+N tuşlarına basın.
3. Database Driver Name kısmından STANDART'ı seçin.
4. Alias'in ismini yazın ve Object menüsünden Apply komutunu verin.
5. Definition kısmında Default Driver kısmından kullandığınız veritabanını seçin.
6. Path kısmına veritabanınızın olduğu yeri seçin.
7. Object menüsünden Apply komutunu verin veya klavyeden Ctrl+A tuşlarına basın.

VERİ TABANI BİLEŞENLERİ
Bilesen paletinde Data Access ve Data Controls sayfalarında bulunurlar. Genel olarak bir veri tabanına bağlanıp veriler üzerinde insert, update,delete veya belli kayıtların görüntülenmesi için kullanılır. Bileşenler aşağıdaki şekillerde görülmektedir.

Data Access sayfasındaki bileşenler unvisible (yani program çalıştığı zaman ekranda gözükmeyen) bileşenlerdir. Bu bileşenler Data Controls sayfasındaki bileşenler yardımı ile görüntülenecek veriler için veritabanları ile köprü vazifesi görürler.
TTable: En önemli iki özelliği Database Name’i ve Table Name’dir. Database Name’e BDE içinden tanımladığınız herhangi bir alias’i, projeniz içindeki Database bileşeninin Database Name’ini (bunlar combobox içinde otomatik olarak gelirler) veya paradox vb. gibi tablolar için tabloların bulunduğu dizinin adini verebilirsiniz. Bu bileşenin diğer önemli özelliklerinden biri de Index Name-Index Fields özelliğidir. Bu özelliği herhangi bir kayıta ulaşmak için kullanılır. Herhangi bir kayıta ulaşmak veya istenilen bir kayıtı bulmak için genel olarak üç çeşit yöntem kullanılır. Bunlar
FindKey()
Locate()
Lookup()
prosedürleridir. Birbirinden farkları sudur. Eğer findkey’i kullanıyorsanız index name ve index fields özellikleri belirtilmiş olmalıdır. Bu fonksiyon istenilen kayıt bulunmuşsa True aksi halde False değerini döndürür. Kullanılışı su şekildedir :
Table1.FindKey([degisken1,degisken2,…]) gibi. Buradaki değişken şayisi index fields özelliğinde tanımlanan veya index name ile belirtilen indexin sahip olduğu alan sayısına eşit olmalıdır ve o alanlara karşılık gelen değerler verilmelidir.
Örnek: Index Fields=Numara olsun. Bu durumda kod su şekilde olmalıdır. Table1.FindKey([2500]) gibi. Burada indekste belirtilen alanın tipi ile koda yazdığımız tip birbirini tutmalıdır. Eğer Index Fields=Adi;Soyadı seklinde ise kod Table1.FindKey([‘Ahmet’,’SAVAS’]) seklinde olmalıdır.
Locate prosedürü de FindKey gibi çalışır. Fakat bunda alan isimlerini de kendiniz verirsiniz. Eğer belirlediğiniz alanlara ait bir index varsa kullanılır, yoksa sıralı arama yapılır. Kullanılışı:
Table1.Locate(‘adi;soyadi’,VarArrayof([‘Ahmet’,’SAVAS’]),[loCaseInsensitive,loPartialKey]) seklindedir.
loCaseInsensitive: Büyük harf-küçük harf ayrımı yapılmaz.
loPartialKey: Bunu kullanırsanız eğer sadece SAVAS’i delilde eğer SAVASÇI da varsa onuda bulabilirsiniz.
Lookup da ayni şekildedir. Farklı yani ise sudur; FindKey ve Locate de cursor bulunan kayıtın üstüne gider, lookup da ise nerde iseniz orda durur. Bir de bu fanksiyonları kullanırken dikkat edeceğiniz diğer bir husus en son yaptığınız işlemdir. Bu prosedürlerden herhangi birini çağırdığınız zaman en son yapılan işlem otomatik olarak kaydedilir. Örneğin iptal etmeniz gereken bir işlem varsa veya tablo insert modandaysa bu durumlarıda kontrol etmelisiniz. Diğer sık kullanılan prosedürleri ise Edit, Insert, Post’dur.
Tablonun hangi durumda olduğunu Table1.State ile öğrenebilirsiniz. Örneğin Table1.State in [dsEdit] tablonun edit modunda olduğunu gösterir.
TQuery: Bu bileşende TTable bileşeni ile hemen hemen aynidir. Fakat bu bilesen ve SQL yardımı ile kayıtlar üzerinde sıralama, sadece belli kayıtları görüntüleme vb. işlemler çok daha rahat yapılabilmektedir. Ayni şeyler TTable bileşenin Filter, Range gibi özellikleri kullanılarak da yapılabilir. Fakat, performans açısından bakıldığında TQuery’leri kullanmak her zaman faydalıdır. Query’ler normalde Read-Only’dirler, yani kayıtlar üzerinde değişiklik yapamazsınız. Eğer kayıtlar üzerinde değişiklik yapmak istiyorsanız, RequestLive özelliğini True yapmalısınız. Bu şekilde kayıtlar üzerinde değişiklik yapıp, yapılan değişiklikleri table'da olduğu gibi kaydedebilirsiniz. Fakat SQL cümleciğiniz birkaç tablodan veri alıp getiriyorsa o zaman RequestLive özelliğini kullanmazsınız. Bu şekildeki query’ler üzerinde değişiklik yapabilmeniz için önce CachedUpdates özelliğini True yapmalısınız. (Bu arada RequestLive, False olmalıdır.) CachedUpdates özelliği True yapıldığında kayıtlar üzerinde güncelleme, değiştirme ve silme yapabildiğinizi göreceksiniz. Fakat bu değişiklikler sadece programda kalır ve fiziksel veritabanını etkilemez. Yaptığımız değişikliklerin kalıcı olması için TUpdateSQL bileşenini kullanırız.Bu işlem için aşağıdaki adımları takip etmelisiniz.
• TQuery ve TUpdateSQL bileşenlerini yerleştirin
• TQuery’nin SQL ifadesini yazın.
• TQuery’nin UpdateQbject özelliğini UpdateSQL1 olarak seçin(veya ne isim verdiyseniz)
• UpdateSQL1 bileşeninin seçip mouse’un sağ tuşuna basın. Oradan UpdateSQL Editor…’ü tıklayın.

İlk önce üzerinde değişiklik yapmak istediğiniz tabloyu seçmelisiniz. Daha sonra Key Fields ile belirtilen genellikle sizin üzerinde değişiklik yapmadığınız alanlar seçilmelidir. Numara vb. Daha sonra değiştirilecek alanlar Update Fields da belirtilen alanlardan seçilmelidir. Daha sonra ise Generate SQL butonuna bastığınızda sizin için gerekli SQL’lerin oluştuğunu göreceksiniz. Daha sonra kod içinde istediğiniz herhangi bir yerde UpdateSQL1.ExecSQL() prosedürünü kullanarak yaptığımız işlemin kalıcı olmasını sağlayabiliriz. ExecSQL’in alacağı parametreler;
ukModify : Güncelleme işleminin kalıcı olması için
ukInsert : Yeni girilen bir kayıtın veritabanında olması için
ukDelete : Sildiğiniz bir kayıtın veritabanından da silinmesi için. TTable üzerinde geçerli olan işlemlerin birçoğu TQuery içinde geçerlidir.

TStoredProc: Bu bilesen SQL tabanlı veritabanları üzerinde yazdığınız prosedürleri veya fonksiyonları kullanmanızı sağlayan bir bileşendir. Eğer Oracle, Sysbase, SQL Server gibi veritabanı kullanmıyorsanız bu bilesene ihtiyacınız yok demektir. Fakat adi anılanlardan herhangi biri veya bunlara benzer bir veritabanı sistemi kullanıyorsanız bu bilesen çok isinize yarayacaktır. Avantajları temel olarak şunlardır. Bu çalıştıracağınız prosedürler veritabanı üzerindedir. Normal kullandığınız query’lere göre çok daha hızlı çalışırlar. Network trafiğini asgari seviyeye indirirler. Yazacağınız prosedürle ilgili kullandığınız veritabanının dökümatasyonuna bakmalısınız.
Örn: Oracle’da prosedür söyle olsun.
PROSEDURE TEST (ISIM OUT VARHAR2, NUMARA NUMBER) IS
BEGIN
SELECT ADI INTO :ISIM FROM ABONE WHERE ABONE_NO=:NUMARA;
END;
Bunu Delphi’de aşağıdaki gibi kullanabilirsiniz;
StoredProc1.ParamByName(‘Numara’).Value:=’1000’;
StoredProc1.GetResults;
Abone_Ismi:= StoredProc1.ParamByName(‘Isim’).AsString;
TDatabase: Bu bileşeni projeniz içinde yönetim kolaylığı sağlamak için kullanabilirsiniz. Mesela TEST diye BDE alias’iniz var. Projedeki bütün table’lar query’ler vs. hepsi buna bağlı. Bunun ismini değiştirdiğinizde bütün projede gidip aliaslari değiştirmeniz gerekir. Bunun yerine TDatabase bileşenini kullanırsanız, sadece bu bileşenin alias’ini değiştirdiğinizde projede buna bağlı ne kadar bilesen varsa hepsini etkileyecektir.
TDataSource: Verilerinizin data controls sayfasındaki bileşenler yardımı ile görüntülenmesi için table,query vb. gibi datasetleri mutlaka bir DataSource’a bağlamanız gerekir.

Yeni yorum gönder

  • Web sayfası ve e-posta adresleri otomatik olarak bağlantıya çevrilir.
  • İzin verilen HTML etiketleri: <a> <b> <center> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Satır ve paragraflar otomatik olarak bölünürler.
  • Use <!--pagebreak--> to create page breaks.

Biçimleme seçenekleri hakkında daha fazla bilgi

CAPTCHA
Güvenlik kodunu yazıp yorumunuzu gönderin.
Not: Yorumlarınız yönetici onayından sonra eklenecektir.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.