Delphi Dersleri
1 sayfadaki 1 sayfası
Delphi Dersleri
Program yazmaya başlıyoruz ve programlarda oluşabilecek hataları inceliyoruz.
Daha önce bu sayfalarda yayınlanan Visual Basic .NET veya C# derslerini okumuş olanların bileceği gibi C#, Visual Basic .NET ve C++ .NET derleyicileri .NET Framework ile birlikte geldiği için kullanılan bilgisayara .NET Framework’ün kurulduğunda ayrıca Visual Studio veya Express Edition’a gerek olmadan Not Defteri ile program yazıp DOS penceresinde derlemek mümkündür. Benzer durum Delphi için geçerli değildir. Çünkü bir önceki derste sözü edilen Delphi paketlerinden birisi bilgisayara kurulduğunda ancak Delphi derleyicisi kullanılabilmektedir. Başka bir deyişle Borland ve yeni adıyla CodeGear firması C++ Builder’da yaptığının aksine DOS ortamında çalışan Delphi derleyicisini Delphi’den bağımsız olarak dağıtmıyor.
Bu derste şimdiye kadar pek karşılaşılmayan veya denenmeyen bir teknikle Delphi’yi anlatacağım. Bu tekniği denemiş olmamın en önemli nedenlerinden birisinin bu derslerin “aralıklı” olarak yayınlanıyor olmasıdır. Bu nedenle her derste anlatılan konuların veya sözü edilen kavramların o derste mutlaka anlaşılmasını hedeflemekteyim. Bu anlatım tekniğinin bugüne kadar denendiğini pek sanmıyorum. Bu anlatım tekniği çok mu gereklidir diye sorulursa cevabım:Hayır değildir. Ancak az sözle işin temelini veya geri planını anlatmayı hedeflediğimiz için bu dersler bakımından önemlidir.
.NET Framework ile birlikte C# ve Visual Basic derleyicileri ücretsiz olarak sunulmasaydı ve .NET uyumlu program geliştirmek için Visual Studio mutlaka gerekli olsaydı bu anlatım tekniğini denemeyebilirdim. Çünkü öyle sanıyorum ki C# ve Visual Basic derslerini izleyen bazı arkadaşlar Delphi hakkında yazılanlara bakacaktır. Ya da önceliği Delphi’ye vermeye baştan karar vermiş olmasına rağmen C# ve Visual Basic derslerinin daha önce yayınlanması nedeniyle C# ve Visual Basic derslerine bakmış olanların benzer anlatım tekniği ile karşılaşmalarını sağlayıp dersleri daha az sıkılarak izlemelerini hedefledim.
İşin hikaye kısmını burada bitirdikten sonra gelelim asıl konuya. Bir önceki derste söylendiği gibi kullandığınız bilgisayara Delphi 7, Borland Developer Rad Studio 2006, Turbo Delphi veya GodeGear Rad Studio 2007’den birisini kurmuş olmalısınız. Kullandığınız bilgisayara Delphi 7’yi kurduysanız DOS penceresinde derleme yaparken kullanmanız gereken dosya aşağıda işaret edilen dosyadır.
Bu dersleri izlemek veya Delphi’yi öğrenmek üzere kullandığınız bilgisayara CodeGear Rad Studio 2007’yi kurduysanız bu ders bağlamında ilgilenmeniz gereken program dosyasını aşağıda işaret ettim. Bu ders bağlamında bilgisayarınıza kurmuş olduğunuz Delphi sürümünün önemi yoktur. Diğer yandan Delphi kurulurken bu dosyanın saklandığı \Bin klasörü arama yoluna dahil edildiği için istediğiniz klasörde derleme yapabilirsiniz. Benim size önerim ayrı klasör hazırlayıp bu derslerde Not Defteri ile hazırlayacağımız programı o klasöre kaydetmeniz şeklindedir.
Not Defteri veya başka bir Text editörle hazırladığınız PAS uzantılı Delphi programlarını bu EXE dosyadan yararlanarak derleyebileceğiz. Delphi projelerinde PRG uzantılı bir kod dosyası olmakta ve projeler bu dosyasından itibaren çalışmaya başlamaktadır. Ancak yukarıda işaret edilen EXE dosya ile DOS penceresinde derlenen Delphi programları için bu şart değildir ve programlarınıza PAS uzantısını verebilirsiniz. Kafaları karıştırmamak ve Delphi’nin tercihine bağlı kalmak için bu derste Not Defteri ile hazırlayıp DCC32.EXE dosyası ile derleyeceğim Delphi programlarına PRG uzantısı verdim. İşte size en kısıtlı Delphi programı.
Gördüğünüz gibi Delphi programları Program deyimi başlamaktadır. Daha sonra sözü edilecek Unit adlı kod dosyalarının ilk satırında Unit deyimine yer verilmektedir. Diğer yandan Delphi programlarında kod satırları Begin-End deyimleri ile sınırlanan alana yazılmaktadır. Bu 3 satırdan meydana gelen Delphi programı hatasızca derlenir ama herhangi bir işlem yapmaz. DOS penceresinde derleme işlemini nasıl yaptığımı aşağıda görebilirsiniz.
DOS penceresine önce yukarıda işaret ettiğim EXE dosyanın adını, ardından derlemek istediğim Delphi programının adını yazıp Enter tuşuna basınca yazdığım kısa program derlenip “ilk.exe” adında bir EXE dosya hazırlandı. Şimdi bu programda değişiklik yapıp ekrana bilgi yazmayı deneyeceğim.
Delphi programlarında DOS penceresinde yani konsola bilgi yazılmak istendiği zaman Write veya Writeln deyimleri kullanılmaktadır. Burada dikkatinizi {$APPTYPE CONSOLE} satırı çekmiş olabilir. Bu bir derleyici direktifidir. Başka bir deyişle bu satırda derleyiciye programı konsol uygulaması olarak derlemesi gerektiği söylenmektedir.
Bu satır programa yazılmazsa derleyici derlenmek istenen programın GUI yani Windows penceresine sahip olduğunu varsayar. Bu şartlarda yani {$APPTYPE CONSOLE} satırı yokken derleme yapılırsa derleme sırasında hata meydana gelmez ama program çalıştırılmak istendiğinde hata meydana gelir. Bu programı derleyip DOS penceresinde çalıştırınca aşağıdaki gibi bir sonuç aldım.
DOS penceresinde çalıştırmak üzere hazırladığınız Delphi programınıza {$APPTYPE CONSOLE} satırını eklemediyseniz derleme yaparken programın konsolda çalışacağını aşağıdaki gibi işaret edebilirsiniz
Buraya kadar anlatılanları özetlemek gerekirse şunlar söylenebilir: Kullandığı bilgisayara Delphi gibi görsel bir program geliştirme aracını kuran birisi doğal olarak IDE adı verilen tümleşik program yazma ortamında bir Windows uygulaması hazırlayıp uygulamanın formuna değişik kontrolleri yerleştirip çalıştırır. Biz ne mi yapmayı çalışıyoruz? Genel alışkanlığın tersini yapmaya çalışıyoruz. Çünkü amacımız sizleri Delphi ile program geliştirmeye hazırlamaktadır. Yoksa üçer beşer gün ara ile yayınlanan birkaç derste Delphi ile ilgili her şeyi anlatma gibi bir iddiamız yoktur.
Sizleri Delphi programcısı olmaya hazırlarken yazdığım her şeyin ilk okumada anlaşılması gibi bir gibi ön şartımız var. Bu nedenledir ki konulara balıklama dalmayıp adım adım ilerliyoruz. Şimdi yukarıda hazırladığım ve “ilk.prg” adını verdiğim Delphi programında küçük değişiklikler yapacağım.
program ilk;
{$APPTYPE CONSOLE}
Var
Yil : Integer;
Begin
Write('Hangi Yildayiz : ');
ReadLn(Yil);
End.
Bu kodla yukarıda verilen arasındaki en önemli fark Var bloğuna yer vermiş olmamdır. Visual Basic, C, C++ ve C# gibi dillerin aksine Delphi ve Pascal’da değişken tanımlanmak istendiği zaman Var bloğuna yer verilir. Var bloğunda değişken tanımlanırken önce değişkenin adı, ardından değişkenin tipi işaret edilir. Bu Delphi programında Write deyimi ile ekrana “Hangi Yıldayız” mesajını yazdıktan sonra ReadLn() deyimi kullanıcının konsoldan bilgi girmesini istedim.
ReadLn() deyimine daha önce tanımladığım “Yil” adlı değişkeni parametre olarak verdiğim için kullanıcının girdiği yıl bilgisi bu değişkene aktarılır. Kullanıcının konsoldan gireceği bilgi Integer tipindeki değişkene aktarılacağı için kullanıcı tam sayı bilgi girmezse hata meydana gelir.
Şimdi bu kısa örneğe ekleme yapıp kullanıcının girdiği yıl bilgisini ekrana yazacağım. Yukarıda Write() deyimine sabit bir bilgiyi parametre olarak vermiştik. Burada “Yil” değişkenin içeriğini yazdırmak istediğim için WriteLn() deyimini aşağıdaki gibi kullanıp bu değişkenin içeriğini ekrana yazdım.
program ilk;
{$APPTYPE CONSOLE}
Var
Yil : Integer;
Begin
Write('Hangi Yıldayız : ');
ReadLn(Yil);
WriteLn(Yil);
End.
Bu şekilde düzenlenen Delphi programı DOS penceresinde derlenip EXE dosya hazırlanıp çalıştırılırsa aşağıdaki gibi bir sonuç alınır. Kullanıcının girmiş olduğu “Yil” bilgisi Writeln ile ekrana yazıldıktan sonra programın çalışması sona erer.
“Yil” değişkenine aktarılmak üzere kullanıcı konsoldan bilgi girerken kendisine Write deyimi ile mesaj verip girmesi gereken bilgi hakkında bilgi verdik. Şimdi koda ekleme yapıp girilen yıl bilgisini ekrana yazmadan önce ekrana mesaj yazacağım. Bu amaçla yukarıda verdiğim örneği aşağıdaki gibi düzenledim.
ilk.prg” adını verdiğim bu Delphi programını dikkatlice incelerseniz Uses bloğuna yer vermiş olduğumu fark edersiniz. Nasıl ki değişken tanımlama gereği duyulduğunda Var bloğuna yer vermek gerekiyorsa Delphi ile birlikte gelen hazır Unit veya Library adı verilen modüllere gerek duyulduğunda uses bloğuna yer vermek gerekiyor.
Bu örnekte Uses bloğunda Delphi’nin SysUtils adlı hazır Unit’ini koda dahil ettim veya bu Unit’e gerek duyduğumu ifade etmiş oldum. Çünkü tamsayı bilgi içeren Integer tipindeki “Yil” değişkenin içeriğini String bilgiye dönüştürmek istiyorum. Bu işlemi yapacak Delphi fonksiyonu ise bu Unit’te bulunmaktadır. IntToStr() fonksiyonu Integer tipindeki bilgileri String bilgiye dönüştürmektedir.
Bu örnekte tek WriteLn ile hem string sabiti hem de Integer tipindeki “Yil” değişkenin içeriğini ekrana yazdırmak istediğim için dönüştürme yaptım. Bu şekilde düzenlenen Delphi programı DOS penceresinde derlenip çalıştırılırsa aşağıdaki gibi bir sonuç alınır.
Buraya kadar anlatılanlara göre üzerinde çalıştığınız PRG veya PAS uzantılı kod dosyasında mevcut bir Unit veya kod dosyasından yararlanmak istiyorsanız bunu Uses bloğunda işaret etmeniz gerekir. Delphi programlama dili ile program yazarken gerek duyacağınız Delphi fonksiyonları ve metotları Delphi ile birlikte Unit’ler şeklinde gelmektedir. Sizler hangi Unit’i kullanmak istiyorsanız onu kod dosyanıza Uses bloğunda dahil etmelisiniz. İleriki derslerde çok sayıda Unit hakkında bilgi sahibi olacaksınız. Eğer Delphi öğrenmeye yeni başladıysanız biraz sabırlı olup bir süre bu derslerde anlatılanlarla yetinmenizi öneriyorum.
Daha önce bu sayfalarda yayınlanan Visual Basic .NET veya C# derslerini okumuş olanların bileceği gibi C#, Visual Basic .NET ve C++ .NET derleyicileri .NET Framework ile birlikte geldiği için kullanılan bilgisayara .NET Framework’ün kurulduğunda ayrıca Visual Studio veya Express Edition’a gerek olmadan Not Defteri ile program yazıp DOS penceresinde derlemek mümkündür. Benzer durum Delphi için geçerli değildir. Çünkü bir önceki derste sözü edilen Delphi paketlerinden birisi bilgisayara kurulduğunda ancak Delphi derleyicisi kullanılabilmektedir. Başka bir deyişle Borland ve yeni adıyla CodeGear firması C++ Builder’da yaptığının aksine DOS ortamında çalışan Delphi derleyicisini Delphi’den bağımsız olarak dağıtmıyor.
Bu derste şimdiye kadar pek karşılaşılmayan veya denenmeyen bir teknikle Delphi’yi anlatacağım. Bu tekniği denemiş olmamın en önemli nedenlerinden birisinin bu derslerin “aralıklı” olarak yayınlanıyor olmasıdır. Bu nedenle her derste anlatılan konuların veya sözü edilen kavramların o derste mutlaka anlaşılmasını hedeflemekteyim. Bu anlatım tekniğinin bugüne kadar denendiğini pek sanmıyorum. Bu anlatım tekniği çok mu gereklidir diye sorulursa cevabım:Hayır değildir. Ancak az sözle işin temelini veya geri planını anlatmayı hedeflediğimiz için bu dersler bakımından önemlidir.
.NET Framework ile birlikte C# ve Visual Basic derleyicileri ücretsiz olarak sunulmasaydı ve .NET uyumlu program geliştirmek için Visual Studio mutlaka gerekli olsaydı bu anlatım tekniğini denemeyebilirdim. Çünkü öyle sanıyorum ki C# ve Visual Basic derslerini izleyen bazı arkadaşlar Delphi hakkında yazılanlara bakacaktır. Ya da önceliği Delphi’ye vermeye baştan karar vermiş olmasına rağmen C# ve Visual Basic derslerinin daha önce yayınlanması nedeniyle C# ve Visual Basic derslerine bakmış olanların benzer anlatım tekniği ile karşılaşmalarını sağlayıp dersleri daha az sıkılarak izlemelerini hedefledim.
İşin hikaye kısmını burada bitirdikten sonra gelelim asıl konuya. Bir önceki derste söylendiği gibi kullandığınız bilgisayara Delphi 7, Borland Developer Rad Studio 2006, Turbo Delphi veya GodeGear Rad Studio 2007’den birisini kurmuş olmalısınız. Kullandığınız bilgisayara Delphi 7’yi kurduysanız DOS penceresinde derleme yaparken kullanmanız gereken dosya aşağıda işaret edilen dosyadır.
Bu dersleri izlemek veya Delphi’yi öğrenmek üzere kullandığınız bilgisayara CodeGear Rad Studio 2007’yi kurduysanız bu ders bağlamında ilgilenmeniz gereken program dosyasını aşağıda işaret ettim. Bu ders bağlamında bilgisayarınıza kurmuş olduğunuz Delphi sürümünün önemi yoktur. Diğer yandan Delphi kurulurken bu dosyanın saklandığı \Bin klasörü arama yoluna dahil edildiği için istediğiniz klasörde derleme yapabilirsiniz. Benim size önerim ayrı klasör hazırlayıp bu derslerde Not Defteri ile hazırlayacağımız programı o klasöre kaydetmeniz şeklindedir.
Not Defteri veya başka bir Text editörle hazırladığınız PAS uzantılı Delphi programlarını bu EXE dosyadan yararlanarak derleyebileceğiz. Delphi projelerinde PRG uzantılı bir kod dosyası olmakta ve projeler bu dosyasından itibaren çalışmaya başlamaktadır. Ancak yukarıda işaret edilen EXE dosya ile DOS penceresinde derlenen Delphi programları için bu şart değildir ve programlarınıza PAS uzantısını verebilirsiniz. Kafaları karıştırmamak ve Delphi’nin tercihine bağlı kalmak için bu derste Not Defteri ile hazırlayıp DCC32.EXE dosyası ile derleyeceğim Delphi programlarına PRG uzantısı verdim. İşte size en kısıtlı Delphi programı.
Gördüğünüz gibi Delphi programları Program deyimi başlamaktadır. Daha sonra sözü edilecek Unit adlı kod dosyalarının ilk satırında Unit deyimine yer verilmektedir. Diğer yandan Delphi programlarında kod satırları Begin-End deyimleri ile sınırlanan alana yazılmaktadır. Bu 3 satırdan meydana gelen Delphi programı hatasızca derlenir ama herhangi bir işlem yapmaz. DOS penceresinde derleme işlemini nasıl yaptığımı aşağıda görebilirsiniz.
DOS penceresine önce yukarıda işaret ettiğim EXE dosyanın adını, ardından derlemek istediğim Delphi programının adını yazıp Enter tuşuna basınca yazdığım kısa program derlenip “ilk.exe” adında bir EXE dosya hazırlandı. Şimdi bu programda değişiklik yapıp ekrana bilgi yazmayı deneyeceğim.
Delphi programlarında DOS penceresinde yani konsola bilgi yazılmak istendiği zaman Write veya Writeln deyimleri kullanılmaktadır. Burada dikkatinizi {$APPTYPE CONSOLE} satırı çekmiş olabilir. Bu bir derleyici direktifidir. Başka bir deyişle bu satırda derleyiciye programı konsol uygulaması olarak derlemesi gerektiği söylenmektedir.
Bu satır programa yazılmazsa derleyici derlenmek istenen programın GUI yani Windows penceresine sahip olduğunu varsayar. Bu şartlarda yani {$APPTYPE CONSOLE} satırı yokken derleme yapılırsa derleme sırasında hata meydana gelmez ama program çalıştırılmak istendiğinde hata meydana gelir. Bu programı derleyip DOS penceresinde çalıştırınca aşağıdaki gibi bir sonuç aldım.
DOS penceresinde çalıştırmak üzere hazırladığınız Delphi programınıza {$APPTYPE CONSOLE} satırını eklemediyseniz derleme yaparken programın konsolda çalışacağını aşağıdaki gibi işaret edebilirsiniz
Buraya kadar anlatılanları özetlemek gerekirse şunlar söylenebilir: Kullandığı bilgisayara Delphi gibi görsel bir program geliştirme aracını kuran birisi doğal olarak IDE adı verilen tümleşik program yazma ortamında bir Windows uygulaması hazırlayıp uygulamanın formuna değişik kontrolleri yerleştirip çalıştırır. Biz ne mi yapmayı çalışıyoruz? Genel alışkanlığın tersini yapmaya çalışıyoruz. Çünkü amacımız sizleri Delphi ile program geliştirmeye hazırlamaktadır. Yoksa üçer beşer gün ara ile yayınlanan birkaç derste Delphi ile ilgili her şeyi anlatma gibi bir iddiamız yoktur.
Sizleri Delphi programcısı olmaya hazırlarken yazdığım her şeyin ilk okumada anlaşılması gibi bir gibi ön şartımız var. Bu nedenledir ki konulara balıklama dalmayıp adım adım ilerliyoruz. Şimdi yukarıda hazırladığım ve “ilk.prg” adını verdiğim Delphi programında küçük değişiklikler yapacağım.
program ilk;
{$APPTYPE CONSOLE}
Var
Yil : Integer;
Begin
Write('Hangi Yildayiz : ');
ReadLn(Yil);
End.
Bu kodla yukarıda verilen arasındaki en önemli fark Var bloğuna yer vermiş olmamdır. Visual Basic, C, C++ ve C# gibi dillerin aksine Delphi ve Pascal’da değişken tanımlanmak istendiği zaman Var bloğuna yer verilir. Var bloğunda değişken tanımlanırken önce değişkenin adı, ardından değişkenin tipi işaret edilir. Bu Delphi programında Write deyimi ile ekrana “Hangi Yıldayız” mesajını yazdıktan sonra ReadLn() deyimi kullanıcının konsoldan bilgi girmesini istedim.
ReadLn() deyimine daha önce tanımladığım “Yil” adlı değişkeni parametre olarak verdiğim için kullanıcının girdiği yıl bilgisi bu değişkene aktarılır. Kullanıcının konsoldan gireceği bilgi Integer tipindeki değişkene aktarılacağı için kullanıcı tam sayı bilgi girmezse hata meydana gelir.
Şimdi bu kısa örneğe ekleme yapıp kullanıcının girdiği yıl bilgisini ekrana yazacağım. Yukarıda Write() deyimine sabit bir bilgiyi parametre olarak vermiştik. Burada “Yil” değişkenin içeriğini yazdırmak istediğim için WriteLn() deyimini aşağıdaki gibi kullanıp bu değişkenin içeriğini ekrana yazdım.
program ilk;
{$APPTYPE CONSOLE}
Var
Yil : Integer;
Begin
Write('Hangi Yıldayız : ');
ReadLn(Yil);
WriteLn(Yil);
End.
Bu şekilde düzenlenen Delphi programı DOS penceresinde derlenip EXE dosya hazırlanıp çalıştırılırsa aşağıdaki gibi bir sonuç alınır. Kullanıcının girmiş olduğu “Yil” bilgisi Writeln ile ekrana yazıldıktan sonra programın çalışması sona erer.
“Yil” değişkenine aktarılmak üzere kullanıcı konsoldan bilgi girerken kendisine Write deyimi ile mesaj verip girmesi gereken bilgi hakkında bilgi verdik. Şimdi koda ekleme yapıp girilen yıl bilgisini ekrana yazmadan önce ekrana mesaj yazacağım. Bu amaçla yukarıda verdiğim örneği aşağıdaki gibi düzenledim.
ilk.prg” adını verdiğim bu Delphi programını dikkatlice incelerseniz Uses bloğuna yer vermiş olduğumu fark edersiniz. Nasıl ki değişken tanımlama gereği duyulduğunda Var bloğuna yer vermek gerekiyorsa Delphi ile birlikte gelen hazır Unit veya Library adı verilen modüllere gerek duyulduğunda uses bloğuna yer vermek gerekiyor.
Bu örnekte Uses bloğunda Delphi’nin SysUtils adlı hazır Unit’ini koda dahil ettim veya bu Unit’e gerek duyduğumu ifade etmiş oldum. Çünkü tamsayı bilgi içeren Integer tipindeki “Yil” değişkenin içeriğini String bilgiye dönüştürmek istiyorum. Bu işlemi yapacak Delphi fonksiyonu ise bu Unit’te bulunmaktadır. IntToStr() fonksiyonu Integer tipindeki bilgileri String bilgiye dönüştürmektedir.
Bu örnekte tek WriteLn ile hem string sabiti hem de Integer tipindeki “Yil” değişkenin içeriğini ekrana yazdırmak istediğim için dönüştürme yaptım. Bu şekilde düzenlenen Delphi programı DOS penceresinde derlenip çalıştırılırsa aşağıdaki gibi bir sonuç alınır.
Buraya kadar anlatılanlara göre üzerinde çalıştığınız PRG veya PAS uzantılı kod dosyasında mevcut bir Unit veya kod dosyasından yararlanmak istiyorsanız bunu Uses bloğunda işaret etmeniz gerekir. Delphi programlama dili ile program yazarken gerek duyacağınız Delphi fonksiyonları ve metotları Delphi ile birlikte Unit’ler şeklinde gelmektedir. Sizler hangi Unit’i kullanmak istiyorsanız onu kod dosyanıza Uses bloğunda dahil etmelisiniz. İleriki derslerde çok sayıda Unit hakkında bilgi sahibi olacaksınız. Eğer Delphi öğrenmeye yeni başladıysanız biraz sabırlı olup bir süre bu derslerde anlatılanlarla yetinmenizi öneriyorum.
1 sayfadaki 1 sayfası
Bu forumun müsaadesi var:
Bu forumdaki mesajlara cevap veremezsiniz