Delphi Prism konulu 3. makalede konsol uygulamalarından söz edilmektedir. Daha önce klasik Delphi ile az çok program yazmış olanlar bu makaleler sayesinde hem Delphi Prism hem de .NET programcılığının ayrıntılarından haberdar alacaklardır.
 
 
http://www.memikyanik.net/delphi-prism-–-konsol-uygulamalari-makalesi/135.aspx
 
 Bu makaleler Türkiye'de ilk olduğu için bu makalelerde kullanılan değişken adlarından dolayı dava edilmem düşük ihtimaldir. Yılllar önce ilk Türkçe Delphi kitabını Memik YANIK yazmış ve bu kitaplardan Delphi öğrenenler yıllar sonra Memik YANIK'ı değişkenlerin adını çalmakla suçlayıp dava ettiler.

Etiketler : Delphi Prism,Memik YANIK

Delphi Prism

22/12/2008

 

2 yıl kadar önce Delphi 2007 çıktığında bir makale yazmış ve Delphi programcılarına yeni Rad Studio hakkında bilgi vermeye çalışmıştım. Yakın bir zamanda Delphi Prism adında yeni bir uygulama geliştirme aracı daha doğrusu bir derleyici programcıların istifadesine sunuldu. Bu ürün vesilesi ile bir Delphi tarihi özeti geçeceğim. Microsoft’un ilk .NET Framework sürümünü hazırladığı günlerde Delphi’nin kullanıma sunulmuş en son sürümü Delphi 7’di. Masaüstü uygulamalar geliştirmek için o günlerin en iyi programlama dili ve uygulama geliştirme aracıydı. Derken Microsoft firması .NET Framework teknolojisini ve .NET uyumlu programlama dillerini kullanıma sundu. Bir süre sonra Borland firması Delphi 8 adıyla Delphi'nin .NET uyumlu sürümünü piyasaya vermekle birlikte Microsoft’un Visual Studio’su ve yeni programlama dilleri(Visual Basic .NET ve C#) kadar programcılardan ilgi görmedi. İşin özü konu Web uygulamaları geliştirmek olduğunda programcılar ağırlıklı olarak tercihlerini Microsoft ürünü araçlardan yana yaptılar. Kişisel görüşüme göre asıl sorun Borland’ın .NET Framework desteği konusunda Microsoft’u geriden takip etmesiydi. Örneğin Delphi ile Web uygulaması geliştiren programcılar .NET Framework 2.0 desteği için uzun süre beklemek zorunda kaldılar. Şu günlerde Microsoft firması Visual Studio 2008 ile .NET Framework 3.5 desteğini sunarken Borland(artık CodeGear demek gerek) ürünü Rad Studio 2007 ile gelen .NET uyumlu Delphi 2007 ile ancak .NET Framework 2.0 uyumlu ASP.NET uygulamaları geliştirmek mümkün olabilmektedir. Bir süre önce CodeGear yani Embarcadero firması(Delphi ve C++ Builder’ın yeni sahibi firma) RemObjects firmasının Oxygene adlı Object Pascal derleyicisinin haklarını satın alıp Delphi Prism adıyla piyasaya verdi.

 

Konunun uzmanlarının bildiği gibi C#, C++ ve Visual Basic programlama dilleri ile .NET uyumlu uygulamalar geliştirmek için kullanılan bilgisayara ilgilenilen .NET Framework sürümünü kurmak yeterli olmaktadır. Çünkü Microsoft firması sözünü ettiğim derleyicileri .NET Framework ile birlikte ücretsiz olarak dağıtmaktadır. Programcı kodunu istediği dilde Not Defteri veya başka bir editörle yazıp .NET Framework ile gelen derleyici ile derleyip kullanabiliyor. Tabii Not Defteri veya başka bir editörle .NET uyumlu uygulama geliştirmek zahmetli olduğu için programcılar Visual Studio'yu veya yukarıda saydığım dillere özel ücretsiz Express Edition'ları kullanıyorlar.

 

Gelelim Delphi Prism'e. Yukarıda anlatılanlara göre Microsoft'un .NET Framework ile birlikte verdiği derleyiciler .NET ile gelen sınıfları kullandıkları için .NET Framework kurulu olmayan bilgisayarda C# veya Visual Basic derleyicilerinden yararlanmak mümkün değildir. Bu durumda herşeyden önce eski adı Oxygene olan Delphi Prism derleyicisini kurmamız gerekiyor. Bu amaçla CodeGear.com'dan veya RemObjects.com'dan deneme sürümünü indirip kurduğunuzda Delphi'nin kurallarına göre .NET uyumlu uygulama geliştirmek mümkün hale geliyor.

 

Tabii programcılar Rad Studio veya Visual Studio gibi IDE'lere alışalı yıllar olduğu için IDE desteği olmayan derleyicilere dönüp bakmıyorlar artık. RemObjects firması Oxygene adlı Object Pascal derleyicisini hazırlarken Visual Studio desteğini verdi. Başka bir deyişle RemObjects firması .NET Framework ile gelen derleyicilerin sayısını bir arttırıp Visual Studio ile Object Pascal kodu yazabilme imkanını Delphi programcılarına sundu. Yani işin özü; daha önce Delphi ile masaüstü uygulamalar geliştirdiniz; sonra baktınız ki Delphi'nin .NET uyumlu sürümü  .NET uyumlu Web uygulamalarını geliştirmede yetersiz kalıyor. Ötesi Visual Basic veya C# gibi yeni bir programlama dili öğrenmek istemiyorsunuz. Bu durumda imdadınıza Oxygene adlı Object Pascal derleyicisi yetişiyordu. Ne mi yapıyordunuz? Kullandığınız bilgisayara önce .NET Framework, sonra Visual Studio'yu kuruyordunuz. Devamında  RemObjects.com'dan Oxygene'i indirip kuruyorsunuz. Sonra ekrana Visual Studio'nun New Project diyalog kutusunda tıpkı Visual Basic gibi tıpkı C# gibi Oxygene adlı Object Pascal derleyicisinin listelendiğini görüyordunuz.

 

Oxygene programcılardan ilgi görünce Delphi ve C++ Builder'ın yeni sahibi Embarcadero firması RemObjects ile anlaşıp Oxygene'e Delphi Prism adını verip dağıtmaya başladı. Tekrar etmek gerekirse Delphi Prism ile uygulama geliştirebilmek için kullandığınız bilgisayara önceden .NET Framework ve Visual Studio’yu kurmanız gerekiyor. Çünkü Delphi Prism Visual Studio ile entegre çalışıyor. Delphi Prism kimler için sorusuna şu cevap verilebilir: Visual Studio ile Delphi programlama dilini kullanarak masaüstü ve web uygulamaları geliştirmek isteyenler tercih edebilir. Tabii Visual Studio ortamında kullanılan Prism %100 Delphi uyumlu değildir. Ötesi Delphi Prism ile Delphi diline yapılan eklemeler ve geliştirmeler bulunmaktadır. Örneğin Procedure ve Function yerine, yani her ikisinin yerine Method anahtar kelimesi kullanılabilmektedir. Hemen sözü edilmesi gereken bir diğer konu ise şudur: Tespitlerim beni yanıltmıyorsa yakın zamanda piyasaya verilen Rad Studio 2009 paketinden çıkan Delphi sürümü ile ASP.NET uygulaması geliştirmek mümkün değildir. Akla hemen şu soru geliyor : Delphi Prism, CodeGear Rad Studio ile entegre çalışabiliyor mu? Tespitlerime göre henüz böyle bir entegrasyon yok. Belki bir süre sonra Delphi Prism'in Rad Studio ile çalışan versiyonu hazırlanır.

Etiketler : Delphi, Prism, Memik Yanık, Programcılık, Visual Studio

Bir önceki derste Not Defteri ile basit bir Delphi programı yazıp DOS penceresinde derleyip çalıştırmıştık. Hazırladığımız kodları DPR uzantılı dosyaya yazmıştık. Bu derste Delphi’nin temel özelliklerini anlatmak üzere konuyu yeni baştan ele alacağım. Bu amaçla “ilk.dpr” adını verdiğim proje dosyasını aşağıdaki gibi düzenledim.

 

 

Tahmin edeceğiniz gibi bu Delphi programı derlenip çalıştırılırsa herhangi bir işlem yapmaz. DPR uzantılı bu kod dosyasında istediğiniz sayıda procedure ve fonksiyon hazırlayıp kullanabilirsiniz. İşe yarar projelerde bütün kodları bir dosyada toplamak pratik olmadığı için kodlar birden fazla dosya arasında dağıtılır.

 

Delphi’de DPR uzantılı proje dosyasından başka PAS uzantılı kod dosyaları olmakta ve bu kod dosyalarına Unit adı verilmektedir. Unit’lerin nasıl hazırlanıp kullanıldığını anlatmak için Not Defteri ile aşağıdaki gibi minimum satırlara sahip bir Unit hazırladım.

 

 

Projenin başlangıç noktasını içeren DPR uzantılı kod dosyaları Program deyimi ile başlarken Unit adı verilen diğer kod dosyaları Unit deyimi ile başlamaktadır. Unit’in sonunu işaret eden end deyiminin sonuna nokta(.) konulmaktadır. Ayrıca Unit’ler Interface ve Implementation adında 2 bölgeye sahip olmak zorundadır. Bu örnekte her iki bölgede de herhangi bir satır yoktur. Unit’lerde işlem yapan satırlar implementation bölgesine yazılırken tip tanımları interface bölgesinde yapılmaktadır. Şimdi unit’te basit procedure hazırlayacağım

 

 

Unit’in implementation bölgesinde bu şekilde procedure hazırlamanız halinde derleyici hata rapor eder. Çünkü unit’lerin implementation bölgesinde hazırlanan procedure’lerin Interface bölgesinde deklare edilmesi veya tanımlanması gerekmektedir. Mesaj() adını verdiğim bu procedure veya yordamı nasıl deklare ettiğimi aşağıda görebilirsiniz.

 

 

Bu şekilde Unit hazırlayıp PAS uzantılı bir dosyaya yazdıktan sonra DPR uzantılı projeye veya program dosyasına dönüp Uses bluğunda bu Unit’i projeye dahil ettim.

 

 

Kendi hazırladığım Unit’i DPR uzantılı proje dosyasına bu şekilde Uses bloğunda dahil ettikten sonra Unit’teki procedure ve fonksiyonları kullanmak mümkün hale gelir. Kendi hazırlayıp “ilk_unit” adını verdiğim Unit’teki “Mesaj” aldı procedure’yi işletmek için DPR dosyasında sonu nokta(.) ile biten Begin-End bloğuna procedure’nin adını yazmakla yetindim.

 

 

PAS uzantılı kod doyası içinde Unit hazırlayıp bu Unit’i DPR dosyasına dahil ettikten sonra sıra geldi derleme yağmaya. Derlemi işlemini yaparken PAS uzantılı dosyayı EXE dosyaya dahil etmelisiniz.

 

 

Bu şekilde derleme yaparsanız “ilk.exe” adında bir EXE dosya hazırlanır. Bu EXE dosyayı çalıştırdığınızda Unit’te hazırlanan Mesaj() adını verdiğim procedure işletilir ve bu procedure’de kullanılan Write() metodu sayesinde işaret edilen mesaj ekrana yazılır.

 

Delphi’nin Program Geliştirme Ortamı

 

Yukarı verilen bilgilerin ışığında gelişmiş Delphi uygulamaları geliştirmek mümkündür. Uygulama geliştirirken Delphi’nin kendisinden yararlanmayıp Not Defteri ile kod yazmak günümüz şartlarında iğne ile koyu kazmaya benzer olduğu için Not Defteri ile Delphi programları yazmayı bırakıp Delphi’nin kendisini kullanmaya başlayacağız.

 

Delphi’nin program geliştirme ortamı hakkında bilgi verirken Borland Developer Studio 2006’dan yararlanacağım. Developer Studio 2006 paketinde Delphi’den başka C++ ve C# derleyicileri bulunmaktadır. Bu dersleri izlerken Delphi’nin 7, 8, 2005 veya 2007 sürümlerini kullanabilirsiniz.

 

Hemen eklemek gerekirse; Borland firması Delphi ve diğer derleyicileri CodeGear adlı gruba devretti ve 2007 yılı başından itibaren piyasaya verilen sürümlerde Borland yerine CodeGear adı kullanılmaktadır. Borland Developer Studio 2007 bilgisayara kurulup çalıştırıldığında ekrana aşağıdaki gibi bir pencere gelmektedir.

 

 

Delphi penceresine kuş bakışı göz attığınızda Delphi penceresi içinde yer alan çok sayıda pencerenin olduğunu görürsünüz. Şimdilik bu pencereler üzerinde durmak yerine bir konsol uygulaması hazırlayacağım. Bu amaçla File menüsünden New-Other komutunu verip ekrana aşağıda verdiğim New Items diyalog kutusunu getirdim.

 

 

Bu diyalog kutusunun sol tarafındaki Items Categories başlıklı liste kutusunda listelenen seçenekler Delphi’nin ve Borland Developer Studio’nun bilgisayara kurulan bileşenlerine göre değişebilir. Bu liste kutusunda Delphi Projects seçili iken diyalog kutusunun sağ tarafında Console Application şablonunu seçip OK düğmesini tıklayınca aşağıdaki gibi bir Delphi penceresi ile karşılaştım.

 

 

Delphi 2006 ile konsol uygulaması hazırlayınca daha önce Not Defteri ile hazırladığımız Delphi programından farksız birkaç satıra sahip proje hazırlandı. Bu sırada Run menüsünden komut verilip Console Application şablonu ile hazırlanan proje çalıştırılırsa DOS penceresinin açılmasıyla kapanması bir olur. Çünkü Program deyiminden sonra {$APPTYPE CONSOLE} direktifi ile uygulamanın konsolda yani DOS penceresinde çalışacağı işaret edilmektedir. Delphi penceresinin bu ders boyunca yararlanmayacağım Structure, Tool Palette gibi pencerelerini kapatınca aşağıda verilen şekle dönüştü.

 

 

Delphi penceresinin sağ tarafındaki Project Manager penceresinde üzerinde çalışılan proje hakkında bilgi olmaktadır. Bu şartlarda Run menüsünden komut verilip bu konsol uygulaması çalıştırıldığında Delphi geri planda derleme yapıp “Project1.exe” adında bir çalışabilir program dosyası hazırlayacağı için Project Manager penceresinde bu EXE dosya işaret edilmektedir. Zaten bu sırada bu konsol uygulamasının başka bir bileşeni de yoktur.

 

Hatırlarsanız yukarıdaki sayfalarda Not Defteri ile hazırladığım konsol uygulamasına bir Unit dahil etmiştim. Sonra bu Unit’te basit bir procedure hazırlayıp DPR uzantılı program veya proje dosyası dahilinde Unit’teki Procedure’yi işletmiştik. Şimdi yanı işlemi tekrar yapacağım. Bu amaçla Delphi’nin File menüsünden komutu verip ekrana New Items diyalog kutusunu getirdim.

 

 

New Items diyalog kutusunda Unit adlı şablonu seçip OK düğmesini tıklayınca Unit1 adında bir Unit hazırlanıp üzerinde çalıştığınız uygulamaya dahil edilir. Yukarıdaki sayfalarda işaret edildiği gibi Delphi’de projenin başlangıç noktası olan ve Program deyiminin kullanıldığı DPR dosyası hariç diğer kod dosyaları birer Unit olarak düzenlenmektedir ve Unit’lerde interface ve implementation bölgeleri olmak zorundadır.

 

 

Anlatılan şekilde konsol uygulamasına Unit dahil edilince Project Manager penceresinde listelendi. Konsol uygulamasına Unit dahil etmenin DPR dosyasına olan etkisini göstermek için “Project1” sekmesine geçtim.

 

 

Ters renge boyadığım bu satır size bir şey ifade etmiyorsa yukarıdaki sayfalarda DPR ve PAS uzantılı 2 dosyanın aynı EXE’ye derlendiği ekran görüntüsüne bakabilirsiniz. Ters renge boyanan bu satırda hem “Unit1” proje dosyasına dahil edilmekte hem de derleyiciye söz konusu Unit’in hangi kod dosyası içinde yer aldığı işaret edilmektedir.

 

Şimdi konu üzerinde düşünmenizi sağlamak için bu konsol uygulamasında bir fonksiyon hazırlayıp bu fonksiyondan adı “Project1” olan DPR uzantılı proje dosyası dahilinde yararlanacağım. Neden Procedure yerine fonksiyon hazırladığımı soruyorsanız amacım fonksiyonların Delphi projelerinde nasıl hazırlandığını anlatmaktır.

 

unit Unit1;

interface

Function Topla():Integer;

 

implementation

Function Topla():Integer;

Var

   Sayi1, Sayi2 : Integer;

Begin

    Write('Toplanacak ilk sayi   : ');

    ReadLn(Sayi1);

    Write('Toplanacak ikinci sayi: ');

    ReadLn(Sayi2);

    Topla := Sayi1 + Sayi2;

End;

end.

 

Gördüğünüz gibi fonksiyonlar Procedure’den farklı olarak Function deyimi veya anahtar kelimesi ile tanımlanmakta ve tanımlama satırında fonksiyonun geriye göndereceği bilginin tipi işaret edilmektedir. Topla() adını verdiğim bu fonksiyon ile Integer tipinde 2 sayının toplamını bulmak istediğim için tanımlama satırını aşağıdaki düzenledim.

 

Function Topla():Integer;

 

Tıpkı Procedure’lerde olduğu gibi Unit’in Implementation bölgesinde kodladığınız fonksiyonu ayrıca Unit’in Interface bölgesinde deklare etmeniz gerekiyor. Fonksiyonlarla ilgili olarak son söyleyeceğim ise şudur: fonksiyonun geriye göndereceği değerin fonksiyon adına aktarıldığıdır. Üzerinde çalıştığım konsol uygulamasındaki Unit’te bu şekilde Topla() adında ve geriye Integer tipinde bilgi gönderen fonksiyonu hazırladıktan sonra proje dosyasına dönüp aşağıdaki gibi düzenleme yapıp bu fonksiyondan yararlandım.

 

 

Unit’teki Topla() adlı fonksiyonu işletmek üzere proje dosyasına öncelikle Var bloğunu ekleyip Integer ve String tipinde 2 değişken tanımladım. Değişken tanımlama isteğim olmasaydı Var bloğuna gerek olmazdı. Burada tanımladığım “Cevap” adlı String değişkeni programın işletimini Enter tuşuna basılıncaya kadar sürdürmek için kullanacağım.

 

Değişkenleri tanımladıktan sonra Unit1’deki Topla() fonksiyonunu işlettim. Procedure’lerde olduğu gibi fonksiyonları işletmek fonksiyonun adını yazmak şeklinde oluyor. Ancak fonksiyonlar geriye değer gönderdikleri için bu değerin bir değişkene aktarılması gerekiyor. Devamında Topla() adını verdiğim fonksiyonun geriye gönderdiği sonucu WriteLn() deyimi ile konsola yani DOS penceresine yazdım. Aynı satırda hem String hem de fonksiyonun geriye gönderdiği Integer tipindeki bilgiyi WriteLn() ile yazabilmek için Delphi’nin IntToStr() fonksiyonu ile dönüştürme yaptım. Aşağıda verdiğim ekran görüntüsünü bu konsol uygulamasını çalıştırdıktan sonra aldım.

 

 

Bu dersi bitirmeden ve konsol uygulamalarını anlatmayı tamamlamadan önce bazı işlemler yapacağım. Bu amaçla ilk olarak yukarıda hazırladığım konsol uygulamasına dahil ettiğim “Unit1” adlı Unit’i projeden uzaklaştıracağım. Bu amaçla Project Manager penceresinde bu Unit’e ait kısayol menüsünü açtım.

 

 

Projeye dahil etmiş olduğum bu Unit’i kaydetmek istiyor olsaydım bu menüden Save veya Save As komutlarını vermem gerekirdi. Bu menüden Remove Frorm Project komutunu verince söz konusu Unit’in proje ile bağlantısı kesilir ve Uses bloğundaki satır otomatik olarak silinir. Bu Unit’i konsol uygulamasından uzaklaştırdıktan sonra proje dosyasındaki Topla() adını verdiğim fonksiyonu çağırmak amacıyla hazırladığım satırları sildim.

 

 

Şimdi bu konsol uygulamasında öyle bir değişiklik yapacağım ki uygulama çalıştırıldığı zaman ekrana bir diyalog kutusunun getirilmesini sağlayacağım. Bunu yaparken Application nesnesinin MessageBox() metodundan yararlanacağım.

 

Yukarıda verilen Proje kodunu incelerseniz {$APPTYPE CONSOLE} direktifi ile derleyiciye söz konusu uygulamanın tipi işaret edilmektedir. Bu direktif kullanılmadığı zaman Delphi derleyicisi uygulamanın grafik(GUI) olduğunu varsaymaktadır.

 

Bunun yanında Delphi derleyicisi her uygulama için bir Application nesnesini otomatik olarak hazırlamaktadır. Konsol uygulaması için Delphi tarafından hazırlanan Application nesnesi üzerinde işlem yapmak veya kullanmak istiyorsanız “Forms” adlı Unit’i projeye dahil etmelisiniz. Bu Unit konsol uygulamasına dahil edildikten sonra TApplication sınıfının metotları kullanılabilir. Örnek olması için konsol uygulamasında Application nesnesin MessageBox() metodunu kullandım.

 

 

Bu değişiklikten sonra konsol uygulaması çalıştırılırsa ekrana aşağıda verdiğim diyalog kutusu getirilir. Projede bu diyalog kutusunu ekrana getiren satırdan başka işletilecek satır olmadığı için OK düğmesi tıklandığında konsol uygulamasının çalışması sona erer.

 

 

Şimdi ise bu konsol uygulaması dahilinde bir form hazırlayıp ekrana getireceğim. Bu amaçla ilk olarak TForm tipinde bir değişken tanımlayıp bu değişkeni TApplication sınıfının CreateForm() metoduna 2. parametre olarak verip form nesnesi hazırlayıp ShowModal metodu ile ekrana getirdim.

 

program Project1;

 {$APPTYPE CONSOLE}

uses

  SysUtils, Forms;

Var

  Form1 : TForm;

 begin

  Application.CreateForm(TForm, Form1);

  Form1.Caption := 'Form1';

  Form1.ShowModal;

end.

 

Bu kod işletildiğinde ekrana bir form getirilir ve bu form kapatılıncaya kadar konsol uygulaması çalışmaya devam eder. Bu şekilde Delphi’nin mevcut sınıflarından birisi olan TForm sınıfından(Delphi’nin bütün mevcut sınıflarının adının ilk harfi T’dir) yararlanılarak hazırlanan form standart özelliklere sahip olur. Bu şekilde düzenlediğim konsol uygulamasını çalıştırınca aşağıdaki gibi bir pencere ekrana geldi.

 

 

Konsol uygulaması dahilinde ekrana getirilen bu form veya pencere kapatılana kadar uygulama çalışmaya devam eder. Bir sonraki dersimizde konsol uygulamalarını bir tarafa bırakıp normal Delphi projeleri üzerinde çalışmaya başlayacağız.

Etiketler : Delphi, Borland, CodeGear, Unit, Program, WriteLn, ReafLn

Bu öğretim yılının başında liselerdeki veya yüksek okullarda derslerde Delphi öğrenmek durumunda olanları ve programcılık kurslarına gidip Delphi'yi öğrenmeye karar verenlerin işlerini kolaylaştırmak üzere Ders şeklinde düzenlediğim yazıları birkaç günlük ara ile yayınlamaya başladım. Burada da yayınladığım ilk Delphi dersinde Delphi ile program yazabilmek için kullanabileceğiniz Delphi sürümleri hakkında kısaca bilgi vermiştim. 2 günlük çalışmanın sonucunda 2. Delphi dersi tamam gibi. Bu dersi yarın veya öbürgün kişisel sitemde bulabilirsiniz. Aşağıda bu dersin ilk 3 paragrafı var. 

 

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

 

Etiketler : Delphi, CodeGear, Borland, Memik Yanık

Daha önce Delphi’nin değişik versiyonlarını anlatmak kaygısı ile çok sayıda kitap yazmış birisi olarak sizlere bu sayfalardan hitap etmenin ayrı bir bakış açısı gerektirdiğini söylemek isterim. Zira hem kitapta istediğiniz gibi yazabiliyorsunuz hem de kitabı edinen okur konuya zaten odaklanmış birisidir. Bu nedenle kitapta direk konuya girilir, hemen örnek verilir. Ne ki burada durum biraz farklı; buraya yazdıklarımı okuyacakların arasında daha önce tek satır kod yazmamış olanlar olabileceği gibi C++ ile yıllardır program geliştirmiş usta birileri de olabilir. Bu nedenle bu dersleri mevcut kitaplarımdan yararlanmadan sohbet hissi veren bir yaklaşımla kaleme almaya çalıştım.

 

.NET çıkana kadar bence Delphi en yaygın ve en gözde programlama diliydi. Çünkü Visual Basic 6, Delphi’ye rakip olamıyordu. Ancak Microsoft firması .NET uyumlu Visual Basic ve C# programlana dillerini çıkarınca Delphi rakipsiz veya açık ara önde olma avantajını kaybetti. Bu gün itibarı ile Delphi’nin bittiğini veya yakın bir zamanda terk edileceğini söylemek mümkün değildir. Yakın bir zamanda Delphi’nin Win32 uyumlu ve .NET 2.0 uyumlu 2007 sürümlerinin piyasaya verildiğini haber vermek isterim. Konuya ilgi duyanlar Memik YANIK’ın Delphi 2007 for Win32 kitabını inceleyebilirler. Kişisel sitemde bu kitap hakkından bir şeyler karalamıştım. CodeGear Rad Studio 2007 adıyla yakın bir zamanda piyasaya verilen paket hakkında yazdığım makaleyi kişisel sitemde bulabilirsiniz.

 

Bu derslerde Delphi’nin değişik sürümlerinden ve Delphi ile hazırlanabilinen değişik tipteki projelerden söz edilecektir. Kısaca özetlemek gerekirse; Delphi ile uygulama geliştirmek söz konusu olduğunda temelde 4 çeşit proje söz konusu olabilmektedir.

 

  • VCL Forms Application
  • VCL.NET Application
  • Windows Forms Application
  • ASP.NET Application

Bu derslerde ağırlığı VCL Forms Application adı verilen klasik Delphi projelerine vereceğim. Bu dersleri izlerken bilgisayarınızda Delphi 7 kurulu ise yalnızca VCL Forms Application adı verilen projeler hakkında yazılanları izleme imkanınız olur. VCL Forms Application adı verilen klasik Delphi projelerinde Borland tarafından geliştirilip VCL(Visual Component Library) adı verilen sınıf kitaplığında yer alan sınıflar kullanılmaktadır. Bu derslerde bu sınıf kitaplığındaki bazı sınıflar hakkında bilgi verilecektir.

 

Delphi’nin .NET uyumlu sürümü ile ilgilenmiyorsanız Delphi 7’den başka Delphi sürümü aramanıza gerek yoktur. Bu arada 2006 yılının Eylül ayında Borland tarafından çıkarılan Turbo serisi derleyicilerin ücretsiz olduğunu belirtmek isterim. Bu dersleri izlerken Turbo adı verilen Delphi sürümlerinden yararlanmak istiyorsanız Turbo Delphi ve Turbo Delphi for .NET’i CodeGear’ın sitesinden indirip kullanabilirsiniz. Aynı bilgisayarda Turbo serisinden çıkan birden fazla derleyicinin veya IDE’nin çalışmasına izin verilmemektedir. Turbo Delphi ile klasik Delphi projeleri geliştirilirken .NET uyumlu Turbo Delphi ise .NET Framework ile gelen sınıflardan yararlanmaktadır.

 

Bu dersleri izlemek için edinilmesi gereken en ideali Delphi sürümü hangisidir diye sorarsanız size cevabım Borland Developer Rad Studio 2006 olur. Çünkü bu paketi kullanarak hem Win32 yani Delphi 7 uyumlu projeleri geliştirebilir, hem .NET ile gelen sınıfları kullanabilen VCL.NET denen projeleri hem Windows Forms Application adı verilen projeleri hem de Web uygulamalarını geliştirme imkanınız vardır. Hemen belirtmek isterim ki Turbo Delphi ve Borland Developer Studio 2006 ile gelen derleyiciler .NET 1.1 uyumludur. Karışıklık olmasında diye tekrar etmek istiyorum: VCL Forms Application tipindeki projelerde yalnızca VCL sınıf kitaplığındaki sınıflar kullanılırken Windows Forms Application uyumlu projelerde ise .NET ile gelen sınıflar kullanılmaktadır. VCL.NET projelerinde ise ağırlık VCL sınıflarında olsa bile istenen .NET sınıfları da kullanılabilmektedir.

 

Delphi hakkında buraya kadar anlatılanların içinde size yabancı veya ilk kez duyduğunuz çok şey varsa bunu sorun yapmayın. Doğal olarak daha önce Delphi ile hiç yazmamış olanlar için VCL kısaltması bir şey ifade etmiyor. Zaten bu derslerde yazılan her şeyi hemen ezberlemenizi kimse istemiyor. Yazılanları okuyun; anlamadıysanız bunu sorun yapmayın. Çünkü ileriki derslerde ilk okumada anlaşılmadığını sandığım konulardan tekrar söz edilecektir.

 

Delphi konusunda yeni olanlar için değinmek istediğim bir diğer konu şudur: Delphi programlama dili Pascal temellidir. Bu nedenle yazım kuralları, blok kontrol deyimleri ve değişken tanımlama şekli Pascal’dan alınmadır. Bu nedenledir ki Pascal bilgisi olanların Delphi’yi öğrenmeleri nispeten kolay olmaktadır. Bu kolaylık Delphi’den önce Pascal öğrenmeye çalışmaya değecek kadar önemli değildir. Bu nedenle Delphi öncesi Pascal üzerine çalışmayı önemsemiyorum.

 

Bazı Delphi Sürümleri

 

Ücretsiz dağıtılan Turbo Delphi’yi Borland veya CodeGear’ın sitesinden indirip kurmak istediğinizde karşınıza aşağıda verdiğim pencere gelir. Gördüğünüz gibi Turbo Delphi ile birlikte InterBase adlı veritabanı verilmektedir.

 

 

.NET 2.0 uyumlu Web uygulamaları ve VCL.NET projeleri hazırlamak istiyorsanız CodeGear Rad Studio 2007 adı verilen paketi edinmelisiniz. CodeGear’ın sitesinden bu paketin 30 günlük deneme sürümünü indirebilirsiniz.

 

Bu arada Delphi 2007 for Win32 uyumlu proje geliştirilirken kullanılan derleyicinin CodeGear Rad Studio 2007’den bağımsız olarak ta dağıtıldığını söylemek isterim. Turbo Delphi’yi bilgisayarınıza kurup çalıştırdığınızda karşınıza aşağıdaki gibi program yazım ortamı veya IDE çıkar.

 

 

Turbo Delphi penceresinin sol tarafında Structure ve Object Inspector, sağında ise Project Manager, Data Explorer, Model View ve Tool Palette pencereleri yer almaktadır. Proje hazırlarken ve mevcut projeleri açarken kullanılan Welcome Page sayfası bir sekme ile temsil edilmektedir. Bu sekmeye ait kısayol menüsünden komut verip Welcome Page’i kapatabilirsiniz. Welcome Page’i sonradan ekrana getirmek istedi­ğinizde View menüsünden komut verebilirsiniz.

 

Welcome Page’te ayrıca daha önce açıp üzerinde çalıştığınız projeler listelenmektedir. Yuka­rıda verilen ekran görüntüsünü aldığım sırada henüz herhangi bir projeyi açıp üzerinde çalışmadığım için listelenen proje yoktu. Yeni bir proje hazırlamak üzere Welcome Page’teki New Project seçe­neğini tıkladığı­nızda ekrana New Items diyalog kutusu gelir.

 

 

Bu diyalog kutusunda VCL Forms Application şablonunu seçip OK düğmesini tıklarsanız yeni bir Delphi projesi hazırlanır. Welcome Page’i kapattıysanız yeni proje hazırlamak istediği­nizde File menüsünden komut verebilirsiniz. Bu pencerede çok sayıda proje hazırlama şablonu listelenmiş olsa bile asıl ilgileneceğimiz projeler VCL Forms Application türünde olanlardır.

 

İster New Items diyalog kutusundaki VCL Forms Application şablonu seçilip OK düğmesi tıklansın, ister File menüsünden New-VCL Forms Application komutu verilsin VCL sınıf kitaplığından yararlanan yeni bir proje hazırlanır ve Turbo Delphi penceresi aşağıdaki gibi bir görünüme sahip olur.

 

 

VCL Forms Application şablonu ile yeni bir proje hazırlandığında bu projeye “Form1” adında bir form dahil edilmektedir. Başka bir anlatımla başlangıçta projeler “Unit1” adında bir Unit’e sahip olmakta ve bu Unit dahilinde “Form1” adında bir Form tipinde bir Class hazırlanmaktadır. Daha sonra anlatılacağı gibi Delphi’de PAS uzantılı kod dosyala­rına Unit adı verilmektedir ve Unit’lerde Class’lar ve diğer tipler tanımlanmaktadır. Bu konunun ayrıntıları hakkında bilgi daha sonra verilecektir. Bu nedenle şu cümle size bir şey ifade etmediyse bunu sorun yapmayın: “Başka bir anlatımla başlangıçta projeler “Unit1” adında bir Unit’e sahip olmakta ve bu Unit dahilinde “Form1” adında ve TForm tipinde bir Class hazırlanmaktadır.”

 

Turbo Delphi penceresinin sağ tarafındaki Project Manager penceresinde projedeki formlar ve unit’ler hakkında bilgi olmaktadır. Turbo Delphi bilgisayara kurulup çalıştırılıp yeni bir proje hazırlandığında ekrana ayrıca Model View ve Data Explorer pencereleri getirilmekte­dir. Bu 2 pencere başlangıçta Project Manager penceresi ile aynı alanı kullandıkları için görünmüyorlar.

 

Kullandığınız bilgisayara Turbo Delphi yerine Borland Developer Studio 2006, Delphi veya CodeGear Rad Studio 2007 kurduysanız karlaşacağınız IDE yukarıdakinden pek farklı olmayacaktır. Bilgisayarınıza Delphi 2007 For Win32’yi kurup çalıştırırsanız karşınıza aşağıdaki gibi bir pencere gelir.

 

 

Aşağıda verdiğim ekran görüntüsünü ise Borland Developer Studio 2006’den aldım. Ekran görüntülerine Dikkat ederseniz Borland Developer Studio 2006, Turbo Delphi ve CodeGear tarafından piyasaya verilen IDE’ler birbirinden pek farklı değiller. Welcome Page olarak anılan default.htm sayfasındaki New Project düğmesini tıklayıp yeni proje hazırlayabilir veya Open Project düğmesini tıklayıp mevcut projelerden birisini açabilirsiniz.

 

 

 

Tabii ki bilgisayarına Delphi’nin herhangi bir sürümünü kurmuş olan birisi meraktan bile olsa New Project düğmesini tıklayıp yeni proje hazırlamıştır. C# ve Visual Basic’te uyguladığımız yaklaşımı Delphi’de de sürdürmek istediğim için Delphi’yi bilgisayara kurduktan sonra bir süre ilgilenmeyeceğiz. Tıpkı Visual Basic ve C# derslerinde yaptığımız gibi Not Defteri ile basit programlar yazıp DOS penceresinde derleyip çalıştıracağız. Böylece Delphi hakkında adım adım bilgi vermiş olacağız. Bir sonraki derste program yazıp derlemeye başlayacağız.

Etiketler : Delphi, CodeGear, Memik Yanık, Delphi 2007