<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CETURK &#187; Interbase</title>
	<atom:link href="http://www.ceturk.com/etiket/interbase/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ceturk.com</link>
	<description>Türkiye&#039;nin Bilişim Platformu</description>
	<lastBuildDate>Sat, 05 May 2012 16:04:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Delphi Prism İle Çalışmaya Başlamak</title>
		<link>http://www.ceturk.com/delphi-prism-ile-calismaya-baslamak/</link>
		<comments>http://www.ceturk.com/delphi-prism-ile-calismaya-baslamak/#comments</comments>
		<pubDate>Mon, 09 Nov 2009 19:22:30 +0000</pubDate>
		<dc:creator>Memik</dc:creator>
				<category><![CDATA[Delphi/Kylix]]></category>
		<category><![CDATA[Dersler]]></category>
		<category><![CDATA[Programlama]]></category>
		<category><![CDATA[Delphi Prism]]></category>
		<category><![CDATA[Install Delphi Prism]]></category>
		<category><![CDATA[InstallAware]]></category>
		<category><![CDATA[Interbase]]></category>
		<category><![CDATA[Memik YANIK]]></category>
		<category><![CDATA[Microsoft Visual Studio 2008]]></category>
		<category><![CDATA[Oxygene]]></category>
		<category><![CDATA[Rad Studio 2010]]></category>
		<category><![CDATA[Visual Studio 2008 for Oxygene]]></category>

		<guid isPermaLink="false">http://www.ceturk.com/?p=4292</guid>
		<description><![CDATA[Bir önceki makalemizde Oxygene’in Delphi Prism olmadan önceki hali hakkında kısaca bilgi verdik. Şimdi sırada Delphi Prism üzerinde konuşmak var. Bu amaçla embarcadero.com’dan Delphi Prism’in en son sürümün deneme kopyasını indirip Install.exe adlı programı çalıştırdım. Aşağıda verilen ekran görüntüsünden fark edeceğiniz gibi Delphi Prism paketinden ayrıca Interbase veritabanı ve InstallAware adlı setup programı çıkmaktadır. Bu [...]]]></description>
			<content:encoded><![CDATA[<p>Bir önceki makalemizde Oxygene’in <strong>Delphi Prism</strong> olmadan önceki hali hakkında kısaca bilgi verdik. Şimdi sırada Delphi Prism üzerinde konuşmak var. Bu amaçla embarcadero.com’dan Delphi Prism’in en son sürümün deneme kopyasını indirip <strong>Install.exe</strong> adlı programı çalıştırdım. Aşağıda verilen ekran görüntüsünden fark edeceğiniz gibi Delphi Prism paketinden ayrıca <strong>Interbase</strong> veritabanı ve <strong>InstallAware</strong> adlı setup programı çıkmaktadır.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_11.jpg"><img class="alignnone size-full wp-image-4293" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_11.jpg" alt="delphi_prism_makale_1_resim_1" width="600" height="425" /></a></p>
<p>Bu penceredeki <strong>Install Delphi Prism</strong> seçeneği tıklandığında birkaç klasik sorudan sonra kurulum tamamlanmaktadır. Delphi Prism’i kurduktan sonra, ister Visual Studio kurulurken Başlat menüsünde hazırlanan komutu verin ister Delphi Prism’e ait komutu verin Visual Studio başlatılmaktadır. Visual Studio 2008’i başlatıp yeni bir Delphi Prism projesi hazırlamak üzere ekrana <strong>New Project</strong> diyalog kutusunu getirdik.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_2.jpg"><img class="alignnone size-full wp-image-4294" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_2.jpg" alt="delphi_prism_makale_1_resim_2" width="583" height="344" /></a></p>
<p>Aşağıda verilen ekran görüntüsünden fark etmiş olacağınız gibi <strong>Windows Application</strong> şablonu ile yeni bir proje hazırlayınca bu projeye <strong>Program.pas</strong> ve <strong>Main.Pas</strong> adında 2 kod dosyası hazırlanmaktadır. Program.pas dosyasında uygulamanın başlangıç noktası olan <strong>Main</strong>() metodu bulunurken, Main.pas dosyasında .NET Framework ile gelen <strong>Form</strong> sınıfının mirasçısı bir Class hazırlanıp bu Class’ın yani formun uygulamanın başlangıç formu olması sağlanmaktadır.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_3.jpg"><img class="alignnone size-full wp-image-4295" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_3.jpg" alt="delphi_prism_makale_1_resim_3" width="700" height="395" /></a></p>
<p>Ancak bu makalelerde sizlere işin özünü anlatmayı hedeflediğim için Visual Studio 2008’den yararlanarak hazırladığım bu projeyi bir tarafa bırakıp Not Defteri ile en kısıtlı özelliklere sahip ve konsolda çalışan bir Delphi Prism uygulaması hazırlayacağız. Bunu yaparken yani en kısıtlı özelliklere sahip konsol uygulamasını hazırlarken konunun hemen anlaşılmasını sağlamak için kodu parça parça vereceğiz. En kısıtlı özelliklere sahip Delphi Prism uygulaması bile <strong>namespace</strong> olarak düzenlendiği için aşağıdaki gibi bir namepace hazırladık.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_4.jpg"><img class="alignnone size-full wp-image-4296" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_4.jpg" alt="delphi_prism_makale_1_resim_4" width="388" height="123" /></a></p>
<p>Namespace’in sonunu işaret eden <strong>end</strong> deyiminin sonuna noktalı virgül(;) yerine nokta konulması gerekiyor. Tabi bu şekilde düzenlenen Delphi Prism kodu derlendiğinde hata meydana gelir. Çünkü tıpkı Delphi uygulamalarında olduğu gibi Delphi Prism kodunun en azından <strong>interface</strong> ve <strong>implementation</strong> bölgelerine sahip olması gerekiyor. Bu nedenle koda ekleme yapıp interface ve implementation bölgelerine yer verdik.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_5.jpg"><img class="alignnone size-full wp-image-4297" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_5.jpg" alt="delphi_prism_makale_1_resim_5" width="373" height="156" /></a></p>
<p>Delphi Prism uygulamasının mutlaka gerek duyduğu interface ve implementation bölgelerine bu şekilde yer verilse bile bu kod derlenirse hata meydana gelir. Çünkü uygulamanın başlangıç noktası olan <strong>Main(</strong>) metoduna sahip olması gerekiyor. Bu nedenle bu koda ekleme yapıp Main() metoduna yer verdik.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_6.jpg"><img class="alignnone size-full wp-image-4298" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_6.jpg" alt="delphi_prism_makale_1_resim_6" width="407" height="189" /></a></p>
<p>Bu şartlarda bu kod hatasız derlenip çalıştırılır. Bu kodu yakında incelediğinizde Delphi Prism’de Delphi’den farklı olarak geriye değer göndermeyen metotlar <strong>method</strong> anahtar kelimesiyle başlayabilmektedir. Yok eğer ben eski alışkanlıklarımı sürdürüp geriye değer göndermeyen metotları hazırlarken <strong>procedure</strong> anahtar kelimesinden yararlanacağım diyorsanız bu kodu aşağıdaki gibi değiştirebilirsiniz.</p>
<p> namespace ilk_uzay;<br />
 interface<br />
 implementation<br />
 <strong> procedure Main;<br />
</strong>    begin<br />
     Console.WriteLine(&#8216;wwww.memikyanik.com&#8217;);<br />
   end;<br />
end.</p>
<p>Not Defteri ile veya başka bir editörle hazırladığınız Delphi Prism kodunu konsolda derlemek istiyorsanız aşağıda yeri ve adı işaret edilen exe dosyadan yani <strong>Oxygene.exe</strong> adlı derleyiciden yararlanmanız gerekir.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_7.jpg"><img class="alignnone size-full wp-image-4299" src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_7.jpg" alt="delphi_prism_makale_1_resim_7" width="516" height="229" /></a></p>
<p>Bu dosya kurulum sırasında arama yoluna dahil edildiği için PAS uzantılı kod dosyaları istenen klasöre kaydedilip istenen klasörde iken derleme yapılabilir. “ilk.pas” adını verdiğim kod dosyasını derlemek için DOS penceresinde önce derleyicinin, ardından derlemek istediğimiz PAS dosyasının adını yazdık.<a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_9.jpg"></a><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_10.jpg"></a><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_8.jpg"></a></p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_8.jpg"><img src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_8.jpg" alt="delphi_prism_makale_1_resim_8" width="452" height="143" /></a></p>
<p>Bu şekilde yapılan derleme sonucu “ilk.exe” adında bir çalışabilir .NET uyumlu dosya hazırlanır. Bu exe uzantılı dosya çalıştırıldığında ise Console sınıfının <strong>WriteLine</strong>() metoduna parametre olarak verilen sabit bilgi konsola yazılır. Delphi Prism’in bazı özelliklerini ortaya çıkarmak için yukarıda verdiğim kodu aşağıdaki gibi değiştirdik.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_9.jpg"><img src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_9.jpg" alt="delphi_prism_makale_1_resim_9" width="390" height="224" /></a></p>
<p>Bu kodda tıpkı Delphi’de olduğu gibi Main() metodu içinde <strong>var</strong> bloğuna yer verip “yil” adında ve integer tipinde bir değişken tanımladık. Devamında Console sınıfının <strong>Read</strong>() metodu sayesinde konsola yazılan bilgiyi bu değişkene aktardık. Delphi Prism’de değişken tanımlamak için metodun asıl işlem yapan satırlarının dışında <strong>var</strong> bloğuna yer vermek şart olmadığı için bu kodu aşağıdaki gibi düzenlemek mümkündür. </p>
<p>namespace ilk_uzay;<br />
 interface<br />
 implementation<br />
  procedure Main;<br />
  begin<strong>  <br />
  var yil : integer;<br />
</strong>    Console.Write(&#8216;Hangi Yıldayız :&#8217;);<br />
    yil := Console.Read();<br />
  end;<br />
end. </p>
<p>Açıkçası Delphi Prism’de <strong>var</strong> anahtar kelimesiyle istenen yerde değişken tanımlanabilmektedir. Şimdi bu Delphi Prism koduna ekleme yapıp kullanıcıdan istenip “yıl” adını verdiğimiz değişkene aktarılan bilgiyi <strong>WriteLine</strong>() metodu ile tekrar ekrana yazacağız. </p>
<p>namespace ilk_uzay;<br />
 interface<br />
 implementation<br />
  method Main;<br />
   begin<br />
     var yil : integer;<br />
     Console.Write(&#8216;Hangi Yıldayız :&#8217;);<br />
     yil := Console.Read();<br />
     Console.WriteLine();<br />
     Console.Write(&#8220;Girdiğiniz Yıl :&#8221;);<br />
     Console.WriteLine(yil);<br />
   end;<br />
end. </p>
<p> Bu şekilde düzenlenen Delphi Prism kodu derlenirken hata vermediği gibi çalıştırıldığında da hata vermez ama girilen yıl bilgisi ile sonradan WriteLine() metodu ile ekrana yazılan yıl bilgisi birbirinden farklı olur. Aşağıda verdiğim ekran görüntüsünü bu Delphi Prism kodunu derleyip çalıştırdıktan sonra aldım.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_10.jpg"><img src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_10.jpg" alt="delphi_prism_makale_1_resim_10" width="396" height="143" /></a></p>
<p>Yukarıda verilen koda dikkat ederseniz konsoldan bilgi okuma işlemi <strong>Read</strong>() metodu ile yapılmaktadır. Read() metodu konsoldan okuma yaparken girilen bilginin ilk karakterinin ASCII kodunu geriye göndermektedir. Console sınıfının <strong>Realline</strong>() metodu ise farklı bir şekilde çalışmaktadır ve konsoldan yani DOS penceresinden okuduğu bilginin String tipte olduğunu varsaymaktadır. Bu nedenle yukarıda verdiğimde örnekte değişiklik yapıp okuma işlemini Read() yerine <strong>Realline</strong>() metodu ile yapmaya çalıştık. </p>
<p>namespace ilk_uzay;<br />
 interface<br />
 implementation<br />
  method Main;<br />
   begin<br />
     var yil : integer;<br />
     Console.Write(&#8216;Hangi Yıldayız :&#8217;);<br />
<strong>      yil := Console.Realline();<br />
</strong>     Console.WriteLine();<br />
     Console.Write(&#8220;Girdiğiniz Yıl :&#8221;);<br />
     Console.WriteLine(yil);<br />
   end;<br />
end. </p>
<p>Bu şekilde değiştirdiğimiz Delphi Prism kodunu derlemek istersek derleyici hata rapor eder. Çünkü Console sınıfının <strong>Realline</strong>() metodu tarafından okunup geriye gönderilen bilgi String tipte olmasına rağmen burada integer tipindeki değişkene aktarmaya çalışıyorum. Bu hatanın önüne geçmek için String tipte bir değişken tanımlayıp kullandık. Bu hali ile programımız istediğimiz sonucu verir. </p>
<p>namespace ilk_uzay;<br />
 interface<br />
 implementation<br />
  method Main;<br />
   begin<br />
     var yil : string;<br />
     Console.Write(&#8216;Hangi Yıldayız :&#8217;);<br />
     yil := Console.Realline();<br />
     Console.WriteLine();<br />
     Console.Write(&#8220;Girdiğiniz Yıl :&#8221;);<br />
     Console.WriteLine(yil);<br />
   end;<br />
end.</p>
<p>Her ne kadar Delphi Prism %100 nesne yönelimli bir programlama dili olsa bile sizi <strong>Class</strong> hazırlamak zorunda bırakmıyor. Deneysel uygulamalar hariç Class hazırlamak gerekeceği için şimdi yukarıda verilen kodda değişiklik yapıp bir Class’a sahip olmasını sağlayacağız.</p>
<p><a href="http://www.ceturk.com/images/delphi_prism_makale_1_resim_112.jpg"><img src="http://www.ceturk.com/images/delphi_prism_makale_1_resim_112.jpg" alt="delphi_prism_makale_1_resim_11" width="441" height="280" /></a></p>
<p>Delphi ve Delphi Prism’de Class’lar <strong>interface</strong> bölgesinde <strong>type</strong> ile <strong>end</strong> anahtar kelimelerinin arasında <strong>class</strong> anahtar kelimesiyle tanımlanır. Burada “ilk_sinif” adını verdiğimiz Class’ın henüz metodu, özelliği, alanı vs yoktur. Class’ın <strong>public</strong> üyeleri public bloğunda, <strong>private</strong> üyeleri ise private bloğunda tanımlanmaktadır. Şimdi bu konsol uygulamasındaki <strong>Main</strong>() metodunun “ilk_sinif” adını verdiğim Class’ın public bir üyesi yani metodu olmasını sağlayacağız. Bu amaçla namespace’in <strong>interface</strong> bölgesindeki <strong>type</strong> bloğunda aşağıdaki gibi değişiklik yaptık. </p>
<p>namespace ilk_uzay;<br />
 interface<br />
  type<br />
    ilk_sinif = class<br />
   public<br />
      <strong>class method Main;<br />
</strong>   private<br />
  end;<br />
 implementation<br />
  method Main;<br />
   begin<br />
     Console.WriteLine(&#8216;wwww.memikyanik.com&#8217;);<br />
     Console.Write(&#8216;Çıkmak İçin Bir Tuşa Basın&#8217;);<br />
     Console.ReadKey();<br />
   end;<br />
end.</p>
<p>Bu şekilde düzenlenen Delphi Prism kodu derlenmek istenirse hata meydana gelir. Çünkü bu sınıfın Main() adında ve herhangi bir parametreye sahip olmayan bir metoda sahip olduğu işaret edilmekle birlikte namespace’in <strong>implementation</strong> bölgesinde bu sınıfla ilişkilendirilen bir metot yoktur. Mevcut Main() metodunun başına <strong>class</strong> ve <strong>method</strong> anahtar kelimesinden sonra class adı aşağıdaki gibi yazılırsa sorun çözülür. </p>
<p>namespace ilk_uzay;<br />
interface<br />
  type<br />
    ilk_sinif = class<br />
   public<br />
      class method Main;<br />
   private<br />
  end;<br />
 implementation</p>
<p>  <strong>class method ilk_sinif.Main;<br />
</strong>   begin<br />
     Console.WriteLine(&#8216;wwww.memikyanik.com&#8217;);<br />
     Console.Write(&#8216;Çıkmak İçin Bir Tuşa Basın&#8217;);<br />
     Console.ReadKey();<br />
   end;<br />
end.</p>
<p>Bu kodda method anahtar kelimesi yerine <strong>procedure</strong>’yi kullanabileceğinizi biliyorsunuz. Bir sonraki makalemizde Delphi Prism anlatmaya kaldığımız yerden devam edeceğiz.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ceturk.com/delphi-prism-ile-calismaya-baslamak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<enclosure url="http://www.ceturk.com/images/delphi_prism_makale_1_resim_11.jpg" length="48165" type="image/jpg" />	</item>
	</channel>
</rss>

