﻿<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Memik Yanık RSS</title><link>http://www.memikyanik.net/rss.aspx</link><description>Memik Yanık.Com | Kişisel Web Sayfası - RSS</description><copyright>(c) 2007, Memik Yanık</copyright><pubDate>08/18/2007</pubDate><language>tr-TR</language><webMaster>semgoksu@memikyanik.net</webMaster><item><title>15. BÖLÜM : OBJECT SINIFI</title><description /><link>http://www.memikyanik.net/15-bolum-object-sinifi-makalesi/140.aspx</link><pubDate>Tue, 12 Jan 2010 04:23:18 GMT</pubDate></item><item><title>14. BÖLÜM : STRUCT ve ENUM TİPİ HAZIRLAMAK(*)</title><description /><link>http://www.memikyanik.net/14-bolum-struct-ve-enum-tipi-hazirlamak-makalesi/139.aspx</link><pubDate>Wed, 09 Dec 2009 23:21:54 GMT</pubDate></item><item><title>13. BÖLÜM : METOT HAZIRLAMAK</title><description /><link>http://www.memikyanik.net/13-bolum-metot-hazirlamak-makalesi/138.aspx</link><pubDate>Thu, 03 Dec 2009 19:00:25 GMT</pubDate></item><item><title>12. BÖLÜM : CLASS'LAR ve NESNEYE YÖNELİK PROGRAMCILIK</title><description /><link>http://www.memikyanik.net/12-bolum-classlar-ve-nesneye-yonelik-programcilik-makalesi/137.aspx</link><pubDate>Wed, 25 Nov 2009 20:03:42 GMT</pubDate></item><item><title>11. BÖLÜM : TARİH ve ZAMAN İŞLEMLERİ</title><description /><link>http://www.memikyanik.net/11-bolum-tarih-ve-zaman-islemleri-makalesi/136.aspx</link><pubDate>Sat, 21 Nov 2009 08:06:03 GMT</pubDate></item><item><title>DELPHI PRISM – KONSOL UYGULAMALARI</title><description /><link>http://www.memikyanik.net/delphi-prism-–-konsol-uygulamalari-makalesi/135.aspx</link><pubDate>Sun, 15 Nov 2009 10:46:57 GMT</pubDate></item><item><title>10. BÖLÜM :  STRINGBUILDER SINIFI ve DÜZENLİ İFADELER</title><description /><link>http://www.memikyanik.net/10-bolum-stringbuilder-sinifi-ve-duzenli-ifadeler-makalesi/134.aspx</link><pubDate>Sat, 14 Nov 2009 06:56:57 GMT</pubDate></item><item><title>İsteğe Bağlı Parametreler</title><description /><link>http://www.memikyanik.net/istege-bagli-parametreler-makalesi/133.aspx</link><pubDate>Fri, 13 Nov 2009 05:42:52 GMT</pubDate></item><item><title>C# 4.0 İle Gelen Yenilikler : İsteğe Bağlı Parametreler</title><description /><link>http://www.memikyanik.net/csharp-40-ile-gelen-yenilikler-istege-bagli-parametreler-makalesi/132.aspx</link><pubDate>Fri, 13 Nov 2009 00:22:29 GMT</pubDate></item><item><title>Namespace Kütüphane Midir?</title><description /><link>http://www.memikyanik.net/namespace-kutuphane-midir-makalesi/131.aspx</link><pubDate>Thu, 12 Nov 2009 20:23:28 GMT</pubDate></item><item><title>Form Üzerinde Keydown</title><description /><link>http://www.memikyanik.net/form-uzerinde-keydown-makalesi/130.aspx</link><pubDate>Wed, 11 Nov 2009 23:25:19 GMT</pubDate></item><item><title>MD5 İle Kodlanmış Bilgiler</title><description /><link>http://www.memikyanik.net/md5-ile-kodlanmis-bilgiler-makalesi/129.aspx</link><pubDate>Tue, 10 Nov 2009 22:18:12 GMT</pubDate></item><item><title>9. BÖLÜM : STRING İŞLEMLERİ VE MATH SINIFI(*)</title><description /><link>http://www.memikyanik.net/9-bolum-string-islemleri-ve-math-sinifi-makalesi/128.aspx</link><pubDate>Tue, 10 Nov 2009 18:59:22 GMT</pubDate></item><item><title>8. BÖLÜM : BLOK KONTROL DEYİMLERİ</title><description /><link>http://www.memikyanik.net/8-bolum-blok-kontrol-deyimleri-makalesi/127.aspx</link><pubDate>Sun, 08 Nov 2009 01:11:13 GMT</pubDate></item><item><title>7. BÖLÜM : OPERATÖRLER</title><description /><link>http://www.memikyanik.net/7-bolum-operatorler-makalesi/126.aspx</link><pubDate>Fri, 06 Nov 2009 18:40:44 GMT</pubDate></item><item><title>6. BÖLÜM : DİZİ DEĞİŞKENLER(*)</title><description /><link>http://www.memikyanik.net/6-bolum-dizi-degiskenler-makalesi/125.aspx</link><pubDate>Wed, 04 Nov 2009 18:57:21 GMT</pubDate></item><item><title>5. BÖLÜM : DEĞİŞKEN TANIMLAMAK ve KULLANMAK(*)</title><description /><link>http://www.memikyanik.net/5-bolum-degisken-tanimlamak-ve-kullanmak-makalesi/124.aspx</link><pubDate>Sun, 01 Nov 2009 19:19:15 GMT</pubDate></item><item><title>Arşivden : Windows 2000 Server Kurmak</title><description>&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Bundan tam 12 yıl önceydi, Novell Netware ve Windows NT Server konulu bir kitap yazmıştım. Kitap alanında ilkti. O günün şartlarında kalitesi iyi olmasa bile kurma aşamalarının fotoğraflarını çekmiş ve kitapta kullanmıştım. Okurlardan ilgi gören bu kitap kısa sayılabilinecek bir sürede tükenmişti ki o günlerde Windows 2000 Server piyasaya verilmişti. Ayrıca Novell Netware’nin kullanım alanı daralmıştı. Bunun üzerine kitabı tekrar bastırmak yerine Windows Server 2000 üzerinde çalışmaya başlamıştım. Sonra zamansızlıktan Windows 2000 Server kitabını tamamlayamadım. Geçen günlerde bir web sitesinde Windows 2000 Server’ın kurulmasıyla ilgili bir yazıyı görünce bundan tam 10 yıl önce yazdığım ve Windows 2000 Server’ın nasıl kurulduğunun anlatıldığı bölümü orijinaline bağlı kalarak birkaç küçük yazım değişiklikleriyle size sunmaya karar verdim. Devamı &lt;/span&gt;&lt;a href="http://www.memikyanik.com/windows_server/windows_2000_server_kurma.htm" target="_blank"&gt;&lt;u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #800080; FONT-FAMILY: Verdana"&gt;burada..&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;</description><link>http://www.memikyanik.net/arsivden-windows-2000-server-kurmak-yazisi/123.aspx</link><pubDate>Sat, 31 Oct 2009 22:10:22 GMT</pubDate></item><item><title>4. BÖLÜM : NAMESPACE HAZIRLAMAK ve KULLANMAK(*)</title><description /><link>http://www.memikyanik.net/4-bolum-namespace-hazirlamak-ve-kullanmak-makalesi/122.aspx</link><pubDate>Sat, 31 Oct 2009 08:39:14 GMT</pubDate></item><item><title>3. BÖLÜM : KONSOL UYGULAMALARI</title><description /><link>http://www.memikyanik.net/3-bolum-konsol-uygulamalari-makalesi/121.aspx</link><pubDate>Thu, 29 Oct 2009 20:19:17 GMT</pubDate></item><item><title>En Kapsamlı ve En Kolay Okunan C# 3.0 Kitabı Bedava...</title><description>&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;2008 yılı sonlarında yayınlanan C# 3.0 kitabım hem az basılıp hem de okurlardan ilgi gördüğü için günümüz şartlarına göre kısa sayılabilecek bir sürede tükendi. Geçtiğimiz günlerde bu kitabın üzerinde çalışıp her kaynakta bulunan birkaç konuyu kitaptan çıkarıp ileri düzey bilgiler içeren 40 yeni sayfa eklemiştim. Kitap alacak kadar parası olmayanları ve kitap alacak kadar parası olanları ise yanlışlıklarla dolu ve daha az bilgi içeren kitaplara mahkûm etmemek için sözünü ettiğim kitabı &lt;a style="COLOR: blue; TEXT-DECORATION: underline; text-underline: single" href="/"&gt;www.memikyanik.net&lt;/a&gt;’te bölümler halinde arkası yarın şeklinde sizlere sunmaya başladım. &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;Web'de yer sorunu olmayacağı için küçük eklemeler yapabileceğim. Bu sayede en kapsamlı Türkçe C# 3.0 kitabı olan bu kitap dünyanın en kapsamlı ve ençok ileri düzey bilgi içeren kitap olma yolunda ilerlemiş olacaktır. &lt;br /&gt;&lt;br /&gt;&lt;img src="/images/books/cs_3_book.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Word belgesi olarak düzenlenip öyle basılan kitap metnini &lt;a style="COLOR: blue; TEXT-DECORATION: underline; text-underline: single" href="/"&gt;www.memikyanik.net&lt;/a&gt;’e aktarmak zaman alacağı için günde ortalama 10 sayfayı sizlerle paylaşmayı düşünüyorum. Çalışmalarıma katkı sağlamak isteyenler veya basılı metni tercih edenler bu kitabın birkaç gün sonra piyasaya çıkacak yeni baskısını &lt;a style="COLOR: blue; TEXT-DECORATION: underline; text-underline: single" href="http://www.seckin.com.tr/"&gt;www.seckin.com.tr&lt;/a&gt;‘den temin edebilirler. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Olur ya değişik nedenlerden dolayı C# 3.0 kitabının içeriğini burada sizinle paylaşmayı yarım bırakmak zorunda kalırsam kimse bana kızmasın. Diğer yandan şimdiye kadar web’de yayınladığım çok sayıda makaleyi isteyen arkadaşların alıp kendi sitelerinde bloglarında yayınlamalarına bir şey demedim. Ancak C# 3.0 kitabının bütünlüğü açısından arkadaşların kitabın bölümlerini kendi sitelerinde yayınlamalarını istemiyorum. Çevrenizde saç baş yolmadan eksiksiz bir kaynaktan &lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;kısa sürede&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt; C# öğrenmesini istedikleriniz var lütfen onlara bundan söz edin, bloglarınızda duyurun. Bu kitapla ilgili olarak soru, öneri ve görüşlerinizi &lt;a href="mailto:memikyanik@hotmail.com"&gt;&lt;u&gt;&lt;span style="COLOR: #0000ff"&gt;memikyanik@hotmail.com&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;‘a yazabilirsiniz. Çünkü kitaba küçük eklemeler yapmaktayım.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Kitabın ilk bölümü aşağıda verilen linktedir.&lt;br /&gt;&lt;br /&gt;&lt;a href="/1-bolum-visual-studionun-program-gelistirme-ortami-makalesi/118.aspx"&gt;&lt;u&gt;&lt;span style="COLOR: #800080"&gt;http://www.memikyanik.net/1-bolum-visual-studionun-program-gelistirme-ortami-makalesi/118.aspx&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="/"&gt;&lt;u&gt;&lt;span style="COLOR: #0000ff"&gt;www.memikyanik.net&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="COLOR: #333333"&gt;'i her gün izleyip C# kitabının yayınlanan sayfalarını okuyup hem kısa sürede C# uzmanı olun hem de kötü kaleme alınmış ve teknik yanlışlarla dolu kitap almak derdinden kurtulun. Eğer C# ve programcılıkta henüz yolun başında iseniz bu kitabı &lt;a href="/"&gt;&lt;u&gt;&lt;span style="COLOR: #0000ff"&gt;www.memikyanik.net&lt;/span&gt;&lt;/u&gt;&lt;/a&gt; 'ten okumadan önce aşağıda linkini verilen PDF'yi indirip okumanız önerilir.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.memikyanik.com/download/csharp_e_book.rar"&gt;&lt;u&gt;&lt;span style="COLOR: #0000ff"&gt;http://www.memikyanik.com/download/csharp_e_book.rar&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Çünkü bu PDF'yi okuyanların C#'ı ve .NET programcılığını öğrenme hızları artmakta ve C# üzerine çalışmak keyifli hale gelmektedir.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</description><link>http://www.memikyanik.net/en-kapsamli-ve-en-kolay-okunan-csharp-30-kitabi-bedava-yazisi/120.aspx</link><pubDate>Thu, 29 Oct 2009 06:51:35 GMT</pubDate></item><item><title>2. BÖLÜM : VISUAL C# İLE PROGRAMCILIĞA GİRİŞ(*)</title><description /><link>http://www.memikyanik.net/2-bolum-visual-csharp-ile-programciliga-giris-makalesi/119.aspx</link><pubDate>Wed, 28 Oct 2009 22:06:27 GMT</pubDate></item><item><title>1. BÖLÜM : VISUAL STUDIO'nun PROGRAM GELİŞTİRME ORTAMI(*)</title><description /><link>http://www.memikyanik.net/1-bolum-visual-studionun-program-gelistirme-ortami-makalesi/118.aspx</link><pubDate>Wed, 28 Oct 2009 19:16:05 GMT</pubDate></item><item><title>SQL Server 2008 Express Edition’ı Kurmak(*)</title><description /><link>http://www.memikyanik.net/sql-server-2008-express-editioni-kurmak-makalesi/117.aspx</link><pubDate>Sat, 10 Oct 2009 12:55:48 GMT</pubDate></item><item><title>Delphi Prism ile Çalışmaya Başlamak</title><description /><link>http://www.memikyanik.net/delphi-prism-ile-calismaya-baslamak-makalesi/116.aspx</link><pubDate>Sat, 10 Oct 2009 08:25:24 GMT</pubDate></item><item><title>İyi Bilinen Session Hakkında(*)</title><description /><link>http://www.memikyanik.net/iyi-bilinen-session-hakkinda-makalesi/115.aspx</link><pubDate>Fri, 09 Oct 2009 19:35:10 GMT</pubDate></item><item><title>Programcılar İçin Yazarlık Dersleri - 3</title><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;span style="FONT-FAMILY: Times New Roman"&gt;&lt;span style="FONT-FAMILY: Verdana"&gt;Hata Yakalama ve Exception Sınıfları’nı Nasıl Anlattım? &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bu makalede programcılık üzerine yazanlara, öğrencilere programcılık öğretenlere ve kendi başına programcılık öğrenenlere hitap etmeye çalışılmaktadır. Bu bölüm okunduktan sonra programcılık üzerine yazılan bazı metinlerin neden zor okunduğunu, neden anlaşılmaz olduğunu fark edeceksiniz. &lt;span style="COLOR: #333333"&gt;Bu derste hem genel konular üzerine konuşacağız hem de C# 3.0 kitabımdan aldığım &lt;b style="mso-bidi-font-weight: normal"&gt;Hata Yakalamak ve Exception Sınıfları&lt;/b&gt; makalesini Yazarlık Dersleri bağlamında ele alacağız, neyi neden nasıl anlattığımın hesabını vereceğim. Başka bir deyişle C# 3.0 kitabım için hazırlayıp sonra kişisel web sitemde konunun meraklılarıyla paylaştığım 30 sayfalık metni bu bölümde ele alacağım. Programcılık üzerine yazanlar bu metni dikkatlice okuduktan sonra dönüp daha önce yazdıklarına burun kıvıracaklarına, ilk fırsatta yazma ve anlatma stillerinde köklü değişikliklere gideceklerine inanabilirsiniz. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Memik Yanık’ın İlk C# Kitabı &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bu derste asıl konumuz &lt;b style="mso-bidi-font-weight: normal"&gt;Hata Yakalamak ve Exception Sınıfları&lt;/b&gt; bağlamında programcılık kitaplarını nasıl kaleme aldığımı anlatmak olduğundan konudan uzaklaşmamak için kendi C# kitaplarıma dönüyorum. 2004 yılında yayınlanan C# kitabım içerik bakımından ortalama bir kitaptı. Yani C# ve .NET programcılığına henüz başlayanları belli bir düzeye çıkarmayı hedefliyordu. Bu hedefin içinde veritabanı uygulamalarını geliştirebilmek, API fonksiyonlarını kullanabilmek, basit web servisi yazabilmek bile vardı. Başka bir deyişle 900 sayfalık kitapta çok sayıda konuya yer yermeye çalışmıştım. Böyle olunca kitaptaki bazı konular ayrıntı içermiyordu. Örneğin yukarıda sözünü ettiğim makalede anlattığım konu, yani &lt;b style="mso-bidi-font-weight: normal"&gt;hata yakalama&lt;/b&gt; konusu topu topu 7 sayfaydı. Tabii ki 900 sayfalık bu kitap bazı okurlar için gerek duymadığı konuları içerirken bazı okurların asıl gerek duydukları konular yoktu veya yeteri ayrıntıda anlatılmamıştı. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Sözünü ettiğim kitapta 7 sayfa boyunca anlattığım &lt;b style="mso-bidi-font-weight: normal"&gt;Hata Yakalamak&lt;/b&gt; adlı bölümde sıfıra bölme hatasından söz etmiştim. Çünkü sıfıra bölme programcılık derslerinin mutlaka anlatılan klasik hatalarından birisidir. Yoksa serileştirme yapılırken karşılaşılan hatalardan söz edecek değildim. Çünkü serileştirme işlemi iyice anlatılmadan serileştirmeyle ilgili hataları veya Application Domain’e assembly yüklerken karşılaşılan hataları yakalayıp anlatmak anlamsız olurdu. Aslında bazılarınız “madem her kitapta sıfıra bölme hatasından söz ediliyor siz de başka hatalardan söz edin” diyebilirler. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bu uyarıyı yapan arkadaşlara cevabım hazır: Yukarıda sözünü ettiğim ilk C# kitabım yayınlandıktan çok sonra birileri çıkıp “ey memik yanık sen sıfıra bölme hatasını biliyor olamazsın” demesin mi? Yani 1994 yılından bu yana sayısız programcılık kitabına imza atan memik yanık sıfıra bölme hatasından bi haberdir diye düşünenler varken sizler kalkıp bu konu gereksizdir, C#’la ilgilenen herkes zaten sıfıra bölme hatasını biliyordur diyorsunuz. Otoritelerin(!) "Memik Yanık sıfıra bölme hatasını bilemez" görüşünden yola çıkarak C# 3.0 kitabımda hata yakalama konusuna torpil geçip(tabi başka konuların sayfalarından kısarak) şimdiye kadar Türkçe yayınlanmış C# kitapları bağlamında bu kitabımın “Hata Yakalamak” konusunun en kapsamlı anlatıldığı kitap olmasını hedefledim. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Şimdi birileri çıkıp “ey memik yanık hata yakalamak konusunda “en” kapsamlı bölümü yazmış olman yazdıklarını bildiğine delalet olmaz, hata yakalamak konusunda bilgi verirken hazırladığın 3-5 satırlık kodlarda kullandığın değişkenlere veya metotlara ad seçerken başka yerli yazarların kitaplarından “izinsiz” esinlenmediğini nereden bileceğiz” diye soru yöneltirlerse? Tam bu sırada ortaokul 3. sınıfta okurken tarih hocam aklıma geldi. Tarih dersinde pek iyi değildim. Baktım tarihten kalacağım, oturup biraz çalıştım. Son yazılı sınavda soruların hepsine cevap verip çıktım. Ertesi gün hocam beni tahtaya çıkarmıştı ve yazılıda sorduğu soruları bir de tahtada cevaplamamı istemişti. Benzer cevapları tahtada da verince bana tam puan vermişti ve kopya çekmediğime inanmıştı. Şimdi benzer çalışmayı yukarıda sözünü ettiğim &lt;b&gt;Hata Yakalamak ve Exception Sınıfları&lt;/b&gt; makalesi için yapacağım. Başka bir deyişle bu makalede veya C# kitabımda yazdıklarımı bildiğimi kanıtlamaya, verdiğim örneklerde kullandığım değişkenlere, metotlara çalıntı yapmadan ad bulabilme becerisine sahip olduğuma, 2 sayıyı bir birine bölen C# kodu yazabildiğime sizleri inandırmaya çalışacağım. Tabii bunu yaparken konuları nasıl anlattığımı, hangi örneği neden verdiğimi vs tek tek anlatacağım. &lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;br /&gt;Hata Yakalamak mı Hata Ayıklamak mı? &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Her ne kadar C# 3.0 kitabımda Hata Yakalamak ve Hata Ayıklamak konularını ayrı birer bölüm olarak düzenlemiş olsam bile bu sitede sizlerle paylaştığım makalede hataları ayıklamaktan ve projeleri çalıştırmaktan kısaca söz ettim. Çünkü Visual Studio kullanan bir çok programcı adayı uygulamaların &lt;b style="mso-bidi-font-weight: normal"&gt;Debug&lt;/b&gt; ve &lt;b style="mso-bidi-font-weight: normal"&gt;Release&lt;/b&gt; modlarından çok sonra haberdar olabilmektedir. Entegre hata ayıklayıcısı ile ilgili olarak yapılmış ayarlamalardan Debug veya Release moduna göre Exception sınıflarının verdikleri tepkiler değiştiği için kısaca olsa bile Debug nedir, Release modu nedir sorularına cevap vermeye çalıştım. Bu düşünce ile bölümde bir sayfa boyunca dedikodu yaptıktan sonra “Projeleri Çalıştırmak” adında bir başlığa yer verdim.&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333"&gt; &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bazılarınız hemen “ey memik yanık bizlere projelerin nasıl çalıştırıldığını anlatmak için mi bu kadar hikâye okuttun?” diye tepki gösterebilirler. Bu soruyu soran arkadaşlara Visual Studio’nun menülerini tek tek dolaşıp Start veya Run adında bir komutun olup olmadığını araştırmalarını önermek isterim. Bir iki dakikalık araştırmadan çıkacak sonuç şu olabilir: Debug menüsünde &lt;b style="mso-bidi-font-weight: normal"&gt;Start Debugging &lt;/b&gt;adında bir komut var ve Standard araç çubuğunda bu komutu temsil eden bir düğme bulunmaktadır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Hemen sorumuzu soralım: Programcı üzerinde çalıştığı uygulamayı neden çalıştırmak ister? Cevap basittir ve nettir: Uygulamayı test etmek, varsa hataları ayıklamak için. İşte bu ihtiyaçtan yola çıkan Microsoft’un programcıları Visual Studio’nun menü çubuğunda &lt;strong&gt;&lt;span style="FONT-FAMILY: 'Verdana','sans-serif'"&gt;Debug&lt;/span&gt;&lt;/strong&gt; adında bir menüye yer verip bu menüde &lt;strong&gt;&lt;span style="FONT-FAMILY: 'Verdana','sans-serif'"&gt;Start&lt;/span&gt;&lt;/strong&gt; &lt;strong&gt;&lt;span style="FONT-FAMILY: 'Verdana','sans-serif'"&gt;Debugging&lt;/span&gt;&lt;/strong&gt; komutunun olmasına karar vermişlerdir. Makalede Debug ve Release modlarından söz ederken aşağıda verdiğim ekran görüntüsünü kullandım. &lt;br /&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_3_1.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bu ekran görüntüsünü kullanmamın nedeni üzerinde çalışılan uygulama Start Debugging komutu ile çalıştırıldığı zaman geri planda nelerin olduğunu, hazırlanan EXE dosyanın nereye konulduğunu okura göstermektir. Şimdi bazı arkadaşlar bu ekran görüntüsü makale veya kitapta fuzuli yer işgal etmez mi, bu ekran görüntüsünü kitapta kullanmakla kitabı şişirmiş olmuyor musun diye sorabilirler. Elbette bu ekran görüntüsü verilmese bile Visual Studio ile C# uygulaması geliştirmek isteyen kişi bir süre sonra Debug klasörüne konulan EXE dosyayı bir şekilde fark eder. Ancak bu fark etmenin anlamlı olması için aynı zamanda Bin klasörünün altında hazırlanan &lt;b style="mso-bidi-font-weight: normal"&gt;Release&lt;/b&gt; klasöründen de haberdar olması gerekir. Ötesi EXE dosyanın ne zaman Debug klasörüne, ne zaman Release klasörünü yerleştirildiğini bilmesi gerek. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Bu ekran görüntüsünü kullanmanın amacı Visual Studio tarafından hazırlanan EXE dosyanın yerini göstermekten öte okurun konu üzerinde düşünmesini sağlamaktadır. İşini ciddiye alan yazar okurunun kafasından geçmesi muhtemel soruları öngörüp tam zamanında bu soruları cevaplar. Eğer yazar okurunun neyi bilip neyi bilmediği konusunda çok sık yanılırsa kitabı bazı okurlar için anlaşılmaz ve eksik olarak değerlendirilirken bazı okurlar için “bu kitabın düzeyi bana göre değilmiş” yorumu yapılır. Yine konu gelip hedef okur grubunu doğru seçip kitabın içeriğini ve anlatım tarazını ona göre seçmeye dayanıyor. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Daha açık anlatımla Hata Yakalama veya Exception sınıflarını anlattığınız kişinin Release veya Debug modu nedir, Visual Studio’nun &lt;b style="mso-bidi-font-weight: normal"&gt;Configure Manager&lt;/b&gt; diyalog kutusunda neler ayarlanır, bu ayarların etkileri ve işlevleri nelerdir sorularına cevap verebiliyor olması gerekir. Bu konuların anlatıldığı kişi veya okur bu sorulara cevap veremiyorsa Exception sınıfları ilgili olarak anlatılanlardan “hiç bir şey anlamaz” denilemez ama kafasında oluşan bazı sorular cevaplanmamış olur. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Okurun kafasında daha sonra cevaplanmak üzere(belki de hiç cevaplanmayacak) ertelenen soruların sayısı arttıkça yazılan metni okumak zorlaşır. Elbette kitabın ilk sayfasında sözünü ettiğiniz bir kavramı hemen orada anlatın demiyorum ama anlatmayacağınız veya çok sonra anlatacağınız kavramlardan mümkün mertebe söz etmemek gerekir. Örneğin birçok yerli yabancı yazar kitaplarının daha ilk sayfalarında &lt;b style="mso-bidi-font-weight: normal"&gt;Assembly&lt;/b&gt;, &lt;b style="mso-bidi-font-weight: normal"&gt;Application Domain&lt;/b&gt;, &lt;b style="mso-bidi-font-weight: normal"&gt;Process&lt;/b&gt;, &lt;b style="mso-bidi-font-weight: normal"&gt;Unmanaged Code&lt;/b&gt; vs.. daha birçok kavramın adını anarlar, birer cümle ile anlatmaya çalışırlar. Bana sorarsanız C# ve .NET Framework konusunda henüz yolun başında olan(zaten yolun başında olduğu için gidip kitap alıyor) okur için Application Domain veya Assembly’den birer cümle ile söz etmenin hiçbir yararı yoktur. Bırakınız yararı bazı temel kavramların 2-3 cümle ile anlatılması okurun kafasını karıştırıyor. Çünkü Assembly ve Application Domain gibi kavramlar hem ilk öğrenilmesi gereken konular değildir hem de en azından 15-20 sayfa boyunca anlatılması gereken konulardır. Yazar arkadaşlara bu konuda önerim şudur: Kitabınızın veya makalenizin hemen başında 2 cümle ile anlatmaya çalıştığınız kavram mutlaka bilinmeli midir? Bu soruya cevabınız evetse okurun o konuyu anlaması için ne gerekiyorsa hemen orada yapın. Okurun söz konusu kavram veya konuyu hemen öğrenmesi gerekmiyorsa ondan söz etmeyin. Ne zaman ki o konuyu ayrıntılı inceleyeceksiniz o zaman söz edin. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;Try-Catch Blokları &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Projeleri çalıştırmaktan ve hataları ayıklamadan kısaca söz ettikten sonra sıra geldi kullanıcının çalışma anında yapması muhtemel hataları öngörüp tedbir almaya. Aslında benzer konuyu birçok kaynakta bulmak mümkündür. Zaten anlatılanlara fazla yabancı olmayan okur metni şöyle bir tarayıp verilen kod örneklerine bakar ve 3-5 satırlık kodlar kendisine yabancı değilse metni okumayı bırakır. Bu nedenle programcılıkla ilgili herhangi bir konu anlatılırken okurun o konudan bi haber olduğunu ve bilgisinin kitabınızın önceki sayfalarında yazılanlarla sınırlı olduğunu varsaymak zorunluluğu vardır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Ötesi okura bilmediği bir konuyu anlatılırken bilmediği başka bir konuya gönderme yapmamak gerekir. Örneğin C# kitabımda ve sözünü ettiğim makalede kullanıcı kaynaklı hataların yakalanması işleminin try-catch-finally blokları ile nasıl yapıldığını kısaca işaret ettikten sonra aşağıdaki gibi 2 cümle yazıp kısa bir kod verdim. C# 3.0 kitabımın Hata Yakalamak ve Exception Sınıfları adlı bölümünden yaptığım alıntıları italik yaptım. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Kullanıcıdan bir işlem için tarih istediğinizi varsayalım. Kullanıcı TextBox’a tarih olarak değerlendirilemeyecek bilgi girerse programın çalışması kırılabilir. Aşağıda verilen metot işletil­di­ğinde TextBox’ın içeriği dönüştürülüp &lt;b style="mso-bidi-font-weight: normal"&gt;DateTime&lt;/b&gt; tipindeki değişkene aktarılır.&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-no-proof: yes"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;void&lt;/span&gt; textBox1_Leave(&lt;span style="mso-bidi-font-weight: bold"&gt;object&lt;/span&gt; sender, &lt;span style="mso-bidi-font-weight: bold"&gt;EventArgs&lt;/span&gt; e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;DateTime&lt;/span&gt; Tarih; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Tarih = &lt;span style="mso-bidi-font-weight: bold"&gt;Convert&lt;/span&gt;.ToDateTime(textBox1.Text);&lt;span style="mso-spacerun: yes"&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Kullanıcı TextBox’a tarih veya zaman olarak değerlendirilebilinecek bilgi girdiği sürece bu kod hatasızca çalışır. Ne zamanki kullanıcı tarihsel tipe dönüştürülemeyecek bilgiyi TextBox’a girip başka nesnenin üzerine giderse bu kod hata verir ve program çalışması kırılır. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Tabii ki bu kod son derece basittir ve okur her şartta DataTime’ın bir veritipi olduğunu fark eder. Ötesi &lt;b style="mso-bidi-font-weight: normal"&gt;ToDataTime&lt;/b&gt;() metodunu ilk kez gören birisi bile bu metodun işlevini yazarın desteği olmadan da anlar. En ideali madem hata yakalama işlemini anlatıyoruz ve okurun kitabı ilk sayfadan itibaren okuduğunu varsayıyoruz, bu kısacak kod verilmeden çok önce okurun &lt;b style="mso-bidi-font-weight: normal"&gt;DateTime&lt;/b&gt; yapısı hakkında bilgi sahibi olması gerekir. Başka bir deyişle Hata Yakalama bölümünden önce kitapta tarih ve zaman bilgileri üzerinde yapılabilinen işlemlerin anlatılmış olması gerekir. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Ya C#’ta hata yakalama işleminin try-catch blokları ile yapıldığını söyledikten hemen sonra veritabanlarına özel bir hatadan söz etmiş olsaydım? Kitapta hata yakalama konusu veritabanı işlemlerinin anlatıldığı bölümden sonra olsaydı bu tercih bir soruna neden olmazdı. Bu nedenle kitaplarda yeni bir konuya geçildiğinde yazılanların kolay anlaşılmasını sağlamak için örnekler herkes tarafından bilinen bir konu veya işlemden yola çıkılarak hazırlanır. Bazı kitap ve makalelerde öyle karmaşık örnekler veriliyor ki okur anlatılan konuyu anlamaktan öte verilen örneğe kafa yormak zorunda kalıyor. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Madem hata yakalamayla ilgili olarak verdiğimiz kısa açıklama ve 2 satırlık kod 3-5 saniyede okunup anlaşılacak basitliktedir hemen bu koda try-catch bloğunu monte edebiliriz. Tekrarlamak gerekirse aşağıda verilen kodun benzerini her yerde bulmanız mümkündür. Arada bir fark varsa o da &lt;b style="mso-bidi-font-weight: normal"&gt;catch&lt;/b&gt; anahtar kelimesinin kullanıldığı satıra burada bir şey yazılmamış olmasıdır. Dolayısıyla bu 3 satırlık kodu birileri sahiplenirse, birileri çıkıp fikrimi çalmışsın derse ona gülümsemeyi ihmal etmeyin. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-no-proof: yes"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;void&lt;/span&gt; textBox1_Leave(&lt;span style="mso-bidi-font-weight: bold"&gt;object&lt;/span&gt; sender, &lt;span style="mso-bidi-font-weight: bold"&gt;EventArgs&lt;/span&gt; e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;DateTime&lt;/span&gt; Tarih; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;try&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Tarih = &lt;span style="mso-bidi-font-weight: bold"&gt;Convert&lt;/span&gt;.ToDateTime(textBox1.Text); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;catch&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="mso-bidi-font-weight: bold"&gt;"Girdiğiniz tarih veya saat yanlış"&lt;/span&gt;); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;textBox1.Focus();&lt;span style="mso-spacerun: yes"&gt;  &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;}&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Konu hakkında az çok bilgisi olanların tahmin edeceği gibi bu kod işletilip ilk TextBox’a uygun tarih girilmeyip ikinci TextBox’ın üzerine gidilirse &lt;b style="mso-bidi-font-weight: normal"&gt;FormatException&lt;/b&gt; denilen yani string bilginin DateTime tipine dönüştürülememesi hatası ile karşılaşılır. Ancak başlangıçta okura meydana gelmesi muhtemel hatanın C# derleyicisinin nazarında hangisi olduğunu anlatmayı tercih etmedim. Başka bir deyişle ilk başta amacım try-catch bloğunun nasıl işlediğini göstermek olduğu için bir çok yazarın aksine &lt;b style="mso-bidi-font-weight: normal"&gt;catch&lt;/b&gt; deyiminin kullanıldığı satıra başka bir şey yazmadım. Çünkü aynı anda hem Exception sınıflarını hem de try-catch bloğunun işleyiş şeklini anlatmak istemedim. Çünkü amacım konuları birbirinden yalıtıp okurun ilk okumada yazılanları anlamasını sağlamaktır. Bir çok yazar arkadaşın kolay okunma bağlamında yaptıkları en büyük yanlış, okurun bilmediği birden fazla konudan veya işlemden aynı anda söz etmeleridir. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;br /&gt;Yukarıda verdiğim kısacak kod hakkında ek bir cümle etmek istiyorum: Kullanıcı çalışma anında ilk TextBox’a ister bir şey yazmadan, isterse de tuttuğu futbol takımının adını yazıp öyle 2. TextBox’a geçsin aynı hata, yani &lt;b style="mso-bidi-font-weight: normal"&gt;FormatException&lt;/b&gt; hatası meydana gelir. &lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;Exception Sınıfları&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Okura böylelikle try-catch bloklarının nasıl işletildiğini işaret ettikten sonra &lt;b style="mso-bidi-font-weight: normal"&gt;Exception Sınıfları&lt;/b&gt; kavramına geçilebilir. Ancak ben tercihimi başka türlü yaptım. Konunun başına dönüyorum ve yukarıda verdiğim koddaki try-catch deyimlerini silip hata meydana geldiği zaman projenin çalışmasının sona erdirilmesini sağlayacağım &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bazı kaynaklarda konu try-catch olduğunda &lt;b style="mso-bidi-font-weight: normal"&gt;release&lt;/b&gt; ve &lt;b style="mso-bidi-font-weight: normal"&gt;debug&lt;/b&gt; modları hakkında bir iki cümle yazılmış olsa bile kimse okurun merakını gidermeyi tercih etmiyor. Eğer kurduğunuz cümleyi okuyan veya verdiğiniz örneği inceleyen okurun kafasında neler geçer, neleri merak eder vs gibi soruları kendisinize sorup bu sorulara kendinizce cevaplar vermiyorsanız yazdığınız metin Microsoft’un MSDN’deki metinlerden bir farkı olmaz. Başka bir deyişle yazdıklarınızda &lt;b style="mso-bidi-font-weight: normal"&gt;help metni tadı&lt;/b&gt; olur. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Kullanıcı yukarıda verdiğim kısa koddaki try-catch bloklarını kaldırıp(yani hata yakalayan satırları kaldırırsa) projeyi entegre debugger’dan bağımsız çalıştırırsa ne olur? Başka bir deyişle &lt;b style="mso-bidi-font-weight: normal"&gt;Start Debugging&lt;/b&gt; veya &lt;b style="mso-bidi-font-weight: normal"&gt;Build&lt;/b&gt; menüsündeki komutlar sayesinde hazırlanan EXE dosyayı Visual Studio’dan bağımsız çalıştırmak isterse ne olur? &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Tabii ki okur projesini Visual Studio’nun Start Debugging komutu ile çalıştırıp formdaki ilk TextBox’a geçerli bir tarih bilgisini girmeden bir sonraki TextBox’ın üzerine giderse Debugger projenin çalışmasını durdurur. Ancak programcı hiçbir tedbir almadan formdaki ilk TextBox’ın &lt;b style="mso-bidi-font-weight: normal"&gt;Leave&lt;/b&gt; olayını temsil etmesi için aşağıdaki gibi bir metot hazırlayıp sonra projesini Visual Studio ile gelen entegre debugger’dan bağımsız çalıştırırsa ne olur? &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-no-proof: yes"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;void&lt;/span&gt; textBox1_Leave(&lt;span style="mso-bidi-font-weight: bold"&gt;object&lt;/span&gt; sender, &lt;span style="mso-bidi-font-weight: bold"&gt;EventArgs&lt;/span&gt; e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;DateTime&lt;/span&gt; Tarih; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Tarih = &lt;span style="mso-bidi-font-weight: bold"&gt;Convert&lt;/span&gt;.ToDateTime(textBox1.Text);&lt;span style="mso-spacerun: yes"&gt;    &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu konuyu neden mi uzattım: Cevap açık, henüz yolun başında olan programcı projesini hazırlayıp kullanıcıya teslim ettiğinde Visual Studio ile gelen entegre debugger’ın olmayacağını ve hatalar karşısında programının farklı tepkiler verebileceğini bilmesi gereklidir. Bu nedenledir C# kitabımın bu bölümünde aşağıda verilen 2 paragrafa ve 2 ekran görüntüsüne yer verdim. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Build menüsünden Build komutunu verip üzerinde çalıştığım projeyi derledim. Daha önceki konulardan bildiğiniz gibi Build menüsünden komut verilip üzerinde çalışılan proje derlendiğinde Debug modunda iken hazırlanan EXE dosya “\bin\debug” klasörüne, Release modunda iken derleme yapıldığında ise EXE dosya “\bin\release” klasörüne konulmaktadır. Derleme işlemini yaparken Release modunda olduğum için derleme sonucu hazırlanan EXE dosya “\bin\Release” klasörüne yerleştirildi. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_3_2.jpg" /&gt;&lt;br /&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu klasördeki EXE dosya çift tıklanıp proje çalıştırılıp TextBox’a girilen bilginin tarihsel bilgiye dönüştürülmesi sırasında hata meydana gelmesi sağlanırsa ekrana aşağıda verdiğim diyalog kutusu gelir. Kullanıcı bu diyalog kutusundaki &lt;b style="mso-bidi-font-weight: normal"&gt;Continue&lt;/b&gt; düğmesini tıklayıp hatanın atlanılıp göz ardı edilmesini sağlayabilir veya Quit düğmesini tıklayıp uygulamanın çalışmasını sona erdirebilir. Meydana gelen hata hakkında ayrıntılı bilgi edinilmek istendiğinde ise &lt;b style="mso-bidi-font-weight: normal"&gt;Details&lt;/b&gt; düğmesi tıklanır. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_3_3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;D&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;avrandığı hatırlatıldıktan sonra sıra hata yakalama sınıflarını anlatmaya geldi .NET Framework ile gelen hata yakalama sınıfları konusunun değişik boyutları olduğu için hata üretmesi muhtemel farklı kodlar yazıp aynı konuyu tekrarlama yoluna gittim. Bu düşünce ile forma bir ListBox yerleştirip aşağıda verdiğim kodu yazdım. &lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;string[] takimlar = new string[5]; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;int adet = listBox1.Items.Count; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;for (int i=0; i&amp;lt;adet; i++) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;takimlar[i]=listBox1.Items[i].ToString(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu kodun anlaşılmaz bir yanı yoktur. Tabi bu değerlendirmeyi bu kitabın hata yakalama konusunun anlatıldığı sayfalardan öncesini okumuş olanlar için yapıyorum. Bu kodda önce 5 elemanlı string bir değişken tanımlanıp devamında for döngüsü ile mevcut ListBox’ın mevcut elemanları bu dizi değişkene aktarılmaktadır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yukarıda okurun karşılaşmasını istediğim &lt;b style="mso-bidi-font-weight: normal"&gt;FormatException&lt;/b&gt; hatasından başka programcıların sık yaptıkları hatalardan bir diğeri dizi değişkenlerde ve indeksleyicisi olan sınıflarda yapılan &lt;b style="mso-bidi-font-weight: normal"&gt;IndexOutOfRangeException&lt;/b&gt; hatasıdır. Madem bu hata sık yapılıyor üzerinde durmak gerekiyor. Kitabımda hataya neden olması muhtemel bu kodu aşağıdaki gibi try-catch bloğuna aldım. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-no-proof: yes"&gt;&lt;br /&gt;private&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;void&lt;/span&gt; Form1_Click(&lt;span style="mso-bidi-font-weight: bold"&gt;object&lt;/span&gt; sender, &lt;span style="mso-bidi-font-weight: bold"&gt;EventArgs&lt;/span&gt; e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;string&lt;/span&gt;[] takimlar = &lt;span style="mso-bidi-font-weight: bold"&gt;new&lt;/span&gt; &lt;span style="mso-bidi-font-weight: bold"&gt;string&lt;/span&gt;[5]; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;int adet = listBox1.Items.Count; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;try&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;for&lt;/span&gt; (&lt;span style="mso-bidi-font-weight: bold"&gt;int&lt;/span&gt; i = 0; i &amp;lt; adet; i++) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;takimlar[i] = listBox1.Items[i].ToString(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;catch&lt;/span&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="mso-bidi-font-weight: bold"&gt;"Dizi Değişkenin sınırı aşıldı\n"&lt;/span&gt;+ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;           &lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold"&gt;"Yalnızca ilk 5 eleman diziye aktarıldı"&lt;/span&gt;); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Koda dikkat edilirse catch deyiminin kullanıldığı satırda catch’den başka bir şey yoktur. Bu catch örneğinden sonra okurun çalışma anında hataya neden olabilecek satırları nasıl catch bloğuna alması gerektiğini kavradığına inanabilirsiniz. Burada da hataya neden olması muhtemel satırlarda okurun yabancısı olmadığı bir tek işleme yer verdim. Ötesi şimdiye kadar try-catch bloklarıyla ilgili olarak yalnızca şunu yazdım:Çalışma anında try bloğundaki herhangi bir satır hataya neden olursa programın işletimi hemen catch bloğuna geçer ve programın çalışması kırılmaz. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Artık herhangi bir hata meydana geldiğinde programın işletimi try bloğundan catch bloğuna geçtiğinde neler oluyor sorularına cevaplar verebiliriz. Bu düşünce ile yukarıda verdiğim kodu aşağıdaki gibi değiştirdim. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;br /&gt;private void Form1_Click(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;string[] takimlar = new string[5]; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;int adet = listBox1.Items.Count; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;for (int i = 0; i &amp;lt; adet; i++) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;takimlar[i] = listBox1.Items[i].ToString(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;catch(IndexOutOfRangeException Hata) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;MessageBox.Show("Meydana gelen hatanın mesajı:\n"+ Hata.Message); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bazı okurlar muhtemelen itiraz edip diyeceklerdir ki, böyle adım adım anlatmak, okuru ikna etmeden başka konuya geçmemek sayfa sayısını arttırmaz mı? Elbette sayfa sayısı artar. Hem okuru konuya hazırlayacaksınız, hem kafasında oluşması muhtemel soruları öngörüp tek tek cevap vereceksiniz, hem okur saçını başını yolmadan yazılanları kolayca okuyacak, hem okur yazılanları ikinci kez okumak zorunda kalmasın diyeceksiniz hem de metin kısacık olacak. Tabii bu mümkün değildir. Yani yazar arkadaşımız tercihini yapacak: Ya anlatmak istediği konunun bütün boyutlarını içeren bir örnek verip onun üzerinde birkaç cümle yazıp başka hemen konuya geçecektir ya da anlatmak istediği konuyu alt konulara bölüp her seferinde okura bu alt konulardan birisini anlatacaktır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Tam bu noktada &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;catch(IndexOutOfRangeException Hata) &lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;satırı üzerinde biraz durmak ve tek başına &lt;b style="mso-bidi-font-weight: normal"&gt;catch&lt;/b&gt; yazılan satırdan farkını anlatmak gerekir. Kitabımda bu amaçla şu cümleye yer vermiştim: &lt;i style="mso-bidi-font-style: normal"&gt;try bloğundaki satırlarda çalışma anında dizi değişkenlerle ilgili bir hata meydana geldiğinde IndexOfRangeException sınıfının örneği hazırlanıp catch bloğuna gönderilir.&lt;/i&gt; Demek ki try bloğunda nasıl bir hata meydana gelirse o hatayla ilgili sınıfın örneği alınıp catch bloğuna gönderiliyor. Eğer catch bloğunun ilk satırında catch deyiminden sonra parantezlerin içinde söz konusu sınıf tipinde bir değişken tanımlanmışsa o hata yakalanıyor. Daha doğrusu meydana gelen hatayı temsil eden sınıfın örneği catch deyiminin olduğu satırda tanımlanan değişkene aktarılıyor. Zaten verdiğim kodda bilerek bu nesnenin &lt;b style="mso-bidi-font-weight: normal"&gt;Message&lt;/b&gt; özelliğinin içeriğine baktım. Konunun hemen devamında okurun ilgili sınıfın örneğinin alınıp catch bloğuna gönderilmesi işlemini hemen kavramaması ihtimali yüksek olduğu için daha önce sizlerle paylaştığım Hata Yakalamak ve Exception Sınıfları adlı makaleye aşağıda verdiğim 2 paragrafı ve kısa kodu ekledim. &lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;try bloğunda meydana gelen hatadan dolayı catch bloğuna gönderilen bütün nesneler &lt;b style="mso-bidi-font-weight: normal"&gt;System&lt;/b&gt;’de bulunan &lt;b style="mso-bidi-font-weight: normal"&gt;Exception&lt;/b&gt; sınıfından türetilen sınıfların örnekleridir. Bu kodda dizi değişkenin olmayan bir elemanı üzerinde işlem yapılmak istendiği için catch bloğuna &lt;b style="mso-bidi-font-weight: normal"&gt;IndexOutOfRangeException&lt;/b&gt; tipinde bir nesne gönderilir. Konu üzerinde düşünmenizi sağlamak için yukarıdaki sayfalanda verdi­ğim örneği aşağıdaki gibi düzenledim. Değişken adı çalma suçumu(!) hafifletmek için DateTime tipindeki değişkene “Tarih” yerine “History” adını verdim&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;br /&gt;private void textBox1_Leave(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;DateTime History; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;History = Convert.ToDateTime(textBox1.Text); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;catch(IndexOutOfRangeException Hata) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;MessageBox.Show("Girdiğiniz tarih veya saat yanlış"); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;textBox1.Focus(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Bu şartlarda TextBox’a &lt;b style="mso-bidi-font-weight: normal"&gt;DateTime&lt;/b&gt; tipine dönüştürülemeyecek bilgi girilip TextBox’tan ayrılıp &lt;b style="mso-bidi-font-weight: normal"&gt;Leave&lt;/b&gt; olayı meydana getirildiğinde try bloğundaki satırlar hataya neden olur ve programın işletimi catch bloğunda geçer. Ne var ki catch bloğunda dönüştürme işlemi sonucu meydana gelen hata yakalanamaz. Çünkü catch deyimine ait parantezin içinde &lt;b style="mso-bidi-font-weight: normal"&gt;IndexOutOfRangeException &lt;/b&gt;tipinde değişken tanımlandığı için catch bloğundaki satırlar işletilmeyip meydana gelen hatadan dolayı programın çalışması kırılır. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu açıklamadan sonra artık okura birden fazla catch bloğundan söz edilebilir. Bu düşünce ile birden fazla hataya neden olabilecek basit bir kod hazırladım. Aşağıda verdiğim kodda TextBox1 ve TextBox2’nin içeriğini Convert sınıfının &lt;b style="mso-bidi-font-weight: normal"&gt;ToByte&lt;/b&gt;() metodu ile dönüştürüp Number1 ve Number2 adını verdiğim byte tipindeki değişkenlere aktardım. Tanımladığım bu değişkenker Byte tipinde olduğu için bu TextBox’lara girilen bilgi 255’ten büyük olduğunda &lt;b style="mso-bidi-font-weight: normal"&gt;OverflowException&lt;/b&gt; hatası ile karşılaşılır. Normalde bu değişkenlere alışkanlıklarım gereği Sayi1, Sayi2 gibi adlar verirdim. Değişken adı benzerliği kabahatini tekrar işlememek için “Sayi” yerine Number’ı tercih ettim. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;br /&gt;private void Hesapla_Click(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;byte Number1 = Convert.ToByte(textBox1.Text); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;byte Number2 = Convert.ToByte(textBox2.Text); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;float Number3 = Number1 / Number; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;textBox3.Text = Number3.ToString();&lt;span style="mso-spacerun: yes"&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Benzer şekilde bu 2 TextBox’a ToByte() metodu ile Byte tipine dönüştürülemeyecek bilgi girilirse &lt;b style="mso-bidi-font-weight: normal"&gt;FormatException&lt;/b&gt; hatası meydana gelir. Tabi kodun devamında Byte tipindeki bu 2 değişkenin içeriği birbirine bölündükleri için sıfıra bölme yani &lt;b style="mso-bidi-font-weight: normal"&gt;DivideByZeroException&lt;/b&gt; hatası meydana gelebilir. Bu kısacak kodda 3 hatanın meydana gelmesi muhtemel olduğu için okura Exception sınıfları hakkında bilgi vermek artık kolaylaşmıştır. Bazı yazarlar benzer bir işlemi, bir metodu veya sınıfı anlatırken örnek verirken özenli davranmazlar. Dolayısıyla verdikleri örnekle ilgili olarak okurun kafasında beliren soruları öngörmeye çalışmazlar. Bu nedenledir ki bazı arkadaşlar yukarıda verdiğim basit kodu küçümserler. Sanki karışık örnek verdiklerinde okurların kendilerine saygısı artacakmış… &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yukarıdaki sayfalarda amaç try-catch blokları hakkında bilgi vermekti. Tabi bu yapılırken ister istemez birkaç Exception sınıfından söz etmek gerekiyordu. Madem Exception sınıflarının nasıl kullanıldığından söz ettik artık .NET Framework ile hazır olarak gelen ve sık kullanılan bazı Exception sınıflarından söz edebiliriz. Tabi .NET Framework ile birlikte çok sayıda Exception sınıfı hazır olarak geldiği için hepsini anlatmak, hepsinden söz edip örnek vermek mümkün değildir. Ötesi bazı Exception sınıfları ancak ilgili oldukları konu ile paralel anlatıldığı zaman anlaşılmaktadır. Örneğin henüz &lt;b style="mso-bidi-font-weight: normal"&gt;Thread&lt;/b&gt;’ler hakkında bilgi sahibi olmayan okura Thread’lerle ilgili Exception sınıfından söz etmek anlamlı değildir. Gelin &lt;b style="mso-bidi-font-weight: normal"&gt;InvalidCastException&lt;/b&gt; ve &lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: #000000"&gt;NullReferenceException&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;sınıfından nasıl söz ettiğimi birlikte inceleyelim: &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Tip dönüştürme işlemleri sırasında hata meydana geldiğinde &lt;b style="mso-bidi-font-weight: normal"&gt;InvalidCastException&lt;/b&gt; hatası meydana gelmektedir. InvalidCastException sınıfını anlatmak için aşağıda verdiğim kodu hazırladım. Bu kodda “Nesne” adı verilen &lt;b style="mso-bidi-font-weight: normal"&gt;object&lt;/b&gt; tipindeki değişkenin içeriği rakamlardan meydana geldiği için &lt;b style="mso-bidi-font-weight: normal"&gt;Unboxing&lt;/b&gt; işlemi yapılıp sorunsuz bir şekilde &lt;b style="mso-bidi-font-weight: normal"&gt;int&lt;/b&gt; tipindeki değişkene aktarılır. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;br /&gt;object Nesne = 2008; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;int Yil = (int)Nesne; // Tehlikeli bir değişken adı &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;this.Text = Yil.ToString(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;catch (System.InvalidCastException Hataspor) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;MessageBox.Show("Dönüştürme hatası meydana geldi" + &lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;n\r" + Hataspor.Message); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;object tipindeki değişkenin içeriği int tipindeki değişkene aktarılırken Unboxing işlemi başarısız olsaydı &lt;b style="mso-bidi-font-weight: normal"&gt;InvalidCastException&lt;/b&gt; hatası ile karşılaşılırdı. Başka bir deyişle object tipindeki değişken int tipindeki değişkene aktarılamayacak bilgi içeriyor olsaydı dönüştürme işlemi başarısız olurdu. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;null yapılmış bir nesnenin özelliklerini kullanmak isterseniz &lt;b style="mso-bidi-font-weight: normal"&gt;NullReferenceException&lt;/b&gt; hatası ile karşılaşılır. Bu hata ile nasıl karşılaşıldığını göstermek için bir Bitmap nesnesi hazırladım. Ardından bu nesneyi null yapıp &lt;b style="mso-bidi-font-weight: normal"&gt;Width&lt;/b&gt; ve &lt;b style="mso-bidi-font-weight: normal"&gt;Height&lt;/b&gt; özelliklerini kullanmayı denedim. Aşağıda verdiğim kodda “i” ve “j” başka yerli yazarlar tarafından daha önce register edilmiş(!) değişken adları oldukları için alışkanlıklarımı bir tarafa bırakıp çift “ii” ve çift “jj” tercih ettim. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;br /&gt;System.Drawing.Bitmap Resim; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;openFileDialog1.ShowDialog(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;string Dosya = openFileDialog1.FileName; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Resim = new System.Drawing.Bitmap(Dosya); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Resim = null; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;int ii = Resim.Width; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;int jj = Resim.Height; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;catch(NullReferenceException) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;MessageBox.Show("Nesne null yapılmış"); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Şimdi bazı okurlar diyecekler ki bu 2 sınıfı anlatmak için verdiğin kısacak örneklerde ne var? Gerçekte bu 2 örnekte orijinal bir şey yok. Madem bu kısa örnekler bu 2 sınıfın işlevini göstermek için verildiğinde okur bir sayfalık bu metni okuduğunda &lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;span style="COLOR: #000000"&gt;InvalidCastException ve NullReferenceExceptionsınıfları hakkında ilk okumada bilgi sahibi olur mu olmaz mı ona bakmak gerekir. Ötesi bu Exception sınıflarıyla ilgili olarak verilen örneklerde anlaşılmaz bir yan yoktur diyorsanız sorun yoktur. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;br /&gt;Finally Bloğunu Nasıl Anlattım &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yukarıda anlatılan şekilde try-catch bloğunun işleyişi hakkında okuru bilgilendirdikten sonra &lt;b style="mso-bidi-font-weight: normal"&gt;finally&lt;/b&gt; bloğundan kısaca söz ettim. Neden mi finally bloğundan çok sonra söz ettim? Nedeni son derece basit : Okura yabancısı olduğu birden fazla konuyu aynı anda anlatmama kaygısı bu tercihimde etkili oldu. Yoksa bir örnekte try-catch-finally blokları bir seferde anlatılır. Tabi bu durumda henüz yolun başında olan, daha doğrusu hata yakalama ve Exception sınıfları hakkında yeterli bilgisi olmadığı için kitap edinen, makale okuyan okur yazılanları anlamakta zorluk çekecekti, belki yazılanları sonuna kadar okumayacaktı. Finally bloğu hakkında bilgi verirken aşağıdaki gibi basit bir örnek hazırladım. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;private void Resim_sec_Click(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;openFileDialog1.ShowDialog(); &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;string kutuk = openFileDialog1.FileName; &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Bitmap Resim = new System.Drawing.Bitmap(kutuk); &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;pictureBox1.Image = (Bitmap)Resim;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;Resim = null;&lt;span style="mso-spacerun: yes"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Dikkat edilirse bu kısacak kodda ne try-catch ne de finally bloğu var. Niye mi her 3 bloğu bir seferde hazırlayıp vermedim? Amaç konuyu adım adım anlatıp ilk okumada anlaşılmasını sağlamaktır. Ötesi okurun bildiği bir konudan hareketle yeni bir konu anlatılmak istenmektedir. Eğer finally bloğunun işlevini henüz kavramamış okura finally bloğu ile &lt;b style="mso-bidi-font-weight: normal"&gt;Dispose&lt;/b&gt; işleminin yakınlığından söz etmiş olsaydım Dispose() metodu ve Dispose işlemi hakkında yeterince bilgisi olmayanların kafasını karıştırıp finally bloğunu anlatabilme şansını zora sokardım. Ötesi dispose işlemi hakkında ayrıntılı bilgisi olan okur zaten finally bloğunun ne işe yaradığını biliyordur. Bu kodu verdikten sonra kitapta aşağıda verdiğim 2 paragrafa ve koda yer verdim. &lt;br /&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Kullanıcı &lt;b style="mso-bidi-font-weight: normal"&gt;OpenFileDialog&lt;/b&gt; nesnesi sayesinde ekrana getirilen diyalog kutusunu dosya seçmeden kapatır veya uygun olmayan bir dosyayı seçerse hata meydana gelir. Kullanıcının yanlış yaptığı veya yapmadığı dosya seçiminden dolayı meydana gelecek hata konusunda kendisine bilgi vermek için yukarıda verdiğim kodu aşağıdaki gibi düzenledim. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;private void Resim_sec_Click(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;System.Drawing.Bitmap Resim; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;openFileDialog1.ShowDialog(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;string kutuk = openFileDialog1.FileName; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Resim = new System.Drawing.Bitmap(kutuk); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;pictureBox1.Image = (Bitmap)Resim; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Resim = null;&lt;span style="mso-spacerun: yes"&gt;      &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;catch &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;MessageBox.Show("Uygun dosya seçmediniz"); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Kullanıcı “Aç” diyalog kutusunda resim dosyası seçmezse veya uygun olmayan bir dosyayı seçerse &lt;b style="mso-bidi-font-weight: normal"&gt;catch &lt;/b&gt;bloğundaki satır işletilip kullanıcıya bilgi verilir. Ancak bu durumda &lt;b style="mso-bidi-font-weight: normal"&gt;Bitmap&lt;/b&gt; tipindeki nesne bellekte yaşamaya devam eder. Çünkü “Resim” adını vermiş olduğum Bitmap nesnesini &lt;b style="mso-bidi-font-weight: normal"&gt;null&lt;/b&gt; yapan satırı &lt;b style="mso-bidi-font-weight: normal"&gt;try&lt;/b&gt; bloğuna yazmıştım.Hata meydana gelsin veya gelmesin mutlaka işletilmesini istediğiniz satırlar varsa bu satırları &lt;b style="mso-bidi-font-weight: normal"&gt;finally&lt;/b&gt; bloğuna yazmalısınız. finally bloğunun nasıl kullanıldığını anlatmak için yukarıda verdiğim kodu aşağıdaki gibi değiştirdim. Burada Bitmap tipindeki değişkeni blok içinde tanımladı­ğım için Garbage Collector zaten bir süre sonra devreye girip bu nesneyi bellekten temizler ama buradaki amacımız deneysel. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;private void Resim_sec_Click(object sender, EventArgs e) &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;System.Drawing.Bitmap Resim; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;openFileDialog1.ShowDialog(); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;string Dosya = openFileDialog1.FileName;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;try &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;Resim = new System.Drawing.Bitmap(Dosya); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;pictureBox1.Image = (Bitmap)Resim; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;catch &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;MessageBox.Show("Uygun dosya seçmediniz"); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;finally &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;{ &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;Resim = null; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;} &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-no-proof: yes; mso-bidi-font-family: 'Courier New'"&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;}&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu anlatılanlara göre ister hata meydana gelsin ister gelmesin &lt;b style="mso-bidi-font-weight: normal"&gt;finally&lt;/b&gt; bloğuna her şartta işletilmesi istenen satırlar yazılmalıdır. Her ne kadar konuyu adım adım anlatmış ve bazılarına göre uzatmış olsam bile finally bloğu hakkında yazılanları okumak fazla zaman almaz. Okur kısa sürede finally bloğunun işlevi hakkında bilgi sahibi olur. Tabi buradaki asıl amaç finally bloğunun ne zaman ve nasıl işletildiğini anlatmaktır. Yoksa finally bloğunda yapılabilinecek işlemleri tek tek saymak değildir. &lt;/span&gt;&lt;/p&gt;</description><link>http://www.memikyanik.net/programcilar-icin-yazarlik-dersleri-3-yazisi/114.aspx</link><pubDate>Fri, 09 Oct 2009 11:40:41 GMT</pubDate></item><item><title>Delphi Prism İle Tanışmak</title><description /><link>http://www.memikyanik.net/delphi-prism-ile-tanismak-makalesi/113.aspx</link><pubDate>Fri, 09 Oct 2009 10:36:54 GMT</pubDate></item><item><title>Resim Dosyalarını Yazdırmak</title><description /><link>http://www.memikyanik.net/resim-dosyalarini-yazdirmak-makalesi/112.aspx</link><pubDate>Fri, 09 Oct 2009 02:36:23 GMT</pubDate></item><item><title>MD5 Algoritması İle Şifreleme Yapmak</title><description /><link>http://www.memikyanik.net/md5-algoritmasi-ile-sifreleme-yapmak-makalesi/111.aspx</link><pubDate>Thu, 08 Oct 2009 08:03:16 GMT</pubDate></item><item><title>Programcılar İçin Yazarlık Dersleri - 2 (*)</title><description>&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: justify"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;Film yönetmenleri kendilerine gelen hikayeyi veya senaryoyu nasıl anlatacaklarına, hangi noktalara vurgu yapacaklarına, olayları nasıl sıralayacaklarına karar vermeden önce uzun çalışmalar yaparlar. Ne var ki benzer çalışmayı programcılık üzerine yazanlar yapmıyorlar. Bildikleri konuları bir baştan başlıyorlar anlatmaya. Tabi neyi nasıl anlatmak gerek sorusu üzerinde yeterinde kafa yormamış yazarların konuları anlatış şeklinin ve sırasının akıbeti çoğunlukla şans eseri kabul edilebilir olgunlukta oluyor. Bir önceki makaleyi okunabilir boyutta tutmak için 10. sayfada kesmiştim. &lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yazar Okurun İhtiyaç Duyduğu Tekniklere Mi Odaklanmalı? &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Konu programcılık veya bir programlama dili üzerine yazmak olduğunda yazar temelde 2 kaygından etkilenir. Birinci kaygı; okurun muhtemel ihtiyaçlarını gözetip bilgi vermek ve çok kullanılan tekniklerden söz etmektir. Örneğin ADO.NET konulu bir kitap yazıyorsanız veya bir eğitim merkezinde hocalık yapıyorsanız okurların ve öğrencilerin hazırladıkları SQL Server veritabanını başka bilgisayara götürme ihtiyaçlarını öngörüp ona göre okuru ya da öğrencileri bilgilendirmeyi hedeflersiniz. Tabii okurların veya öğrencilerin konu programcılık olduğunda ileri ki günlerdeki muhtemel ihtiyaçlarının hepsini baştan öngörüp kitabın içeriğini oluşturmak mümkün olmadığına göre yazar kendince bazı seçimler yapar. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yazarın veya hocanın programcılık anlatırken etkisinde kaldığı ikinci kaygı ise bazı kavramları veya işlemleri anlaşılabilir yapmak, okurun bu kavramları anlayabilmesidir. Eğer birincil amacınız programcılıkla ilgili bir kavramı, bir işlemi okurun veya öğrencinin anlaması ise, konuyu işlerken veya örnek verirken pratik değer aramaz, vereceğiniz örneğe okurun ileriki günlerde ihtiyacı olur mu olmaz mı bakmazsınız. Örneğin .NET uyumlu programlama dillerinde &lt;b style="mso-bidi-font-weight: normal"&gt;Application&lt;/b&gt; sınıfı ile hiç ilgilenmeden profesyonel kalitede programlar yazmak mümkündür. Bu nedenledir ki birçok yerli yabancı kaynakta ya Application sınıfından hiç söz edilmez ya da birkaç cümle ile geçiştirilir. Tabii Application sınıfının sık gerek duyulan bir kaç metodundan söz edilir ama bu söz etmede Application sınıfına vurgu yapılmaz. Örneğin uygulamanın çalışması sona erdirilirken gerek duyulan &lt;b style="mso-bidi-font-weight: normal"&gt;Exit&lt;/b&gt;() metodundan bir cümle ile söz edilir. Okurunuzu Application sınıfı hakkında mutlaka bilgilendirmek istiyorsanız belki de okurların hiçbir zaman kullanmaya gerek duymayacakları bazı işlemlerden söz edeceksiniz. Örneğin sanki Application sınıfı .NET Framework ile gelmiyormuş gibi davranıp, başka bir deyişle C++ programcıları gibi mesaj kuyruğu hazırlamak isteyebilirsiniz. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Gelelim bu derslerde sık sık atıfta bulunduğum C# 3.0 kitabıma: Bu kitapta zaman zaman anlattığım konunun kolay kavranmasını sağlamak için yaptığım veya anlattığım işlemlerin pratik değeri var mı yok mu göz ardı ettim. Örneğin Application sınıfı hakkında bilgi verilen bölümde birincil amaç Application sınıfı hakkında yazılanların anlaşılmasını sağlamak olduğundan zaman zaman pratik değeri olmayan işlemler yapılıp üzerinde konuşuldu. Örneğin .NET uygulamalarında Application sınıfının &lt;b style="mso-bidi-font-weight: normal"&gt;Run&lt;/b&gt;() metodu çok özel durumlar hariç yalnızca bir kez kullanılır. Run() metodunun işlevinin kavranması için henüz Application sonlanmamış iken Run() metodunu ikinci kez kullanılıp hata meydana gelmesine neden olup okurun konu üzerinde düşünmesi sağladım. Bu bağlamda yazarlara önerim şudur: Anlattığınız konu kolay anlaşılan ve arka planını bilmek gerekmeyen bir konu ise mümkünse verilen örneklerde pratik değer aranmalıdır. Anlatılan konu zor anlaşılan bir konu ise pratik değer kaygısı başlangıçta bir tarafa bırakılabilinir. &lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;br /&gt;Ekran Görüntüleri Hangi Büyüklükte Olmalıdır? &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;1992 yılında dergilerde yayınlanan ilk yazılarımda ve 1994 yılında yayınlanan ilk kitabımda o günlerin kitaplarından farklı olarak ekran görüntülerine yer vermiştim. Memik Yanık’a hücum etmek isteyenlerin ilk enstrümanı şuydu:“Memik Yanık’ın kitaplarında ekran görüntülerinden başka bir şey yoktur”. Şimdilerde bakıyorum da bırakınız ekran görüntüsüz programcılık kitabı bulmayı makale bulmak bile zordur. Asıl sorun da tam burada başlıyor:Kitap metni içinde veya makalede ne sıklıkta ekran görüntüsü kullanılmalı, ekran görüntüleri hangi büyüklükteki olmalı, ekran görüntüsü sayfanın neresine konulmalıdır, okurun ekran görüntüsünü yazının parçasıymış gibi görmesi için neler yapılmalıdır? Bu gibi sorulardan “bi haber” olanların kitaplarında veya makalelerinde ekran görüntülerini işlevsel kullanabilmeleri şansa veya tesadüfe kalmıştır. İncelediğim birçok yerli ve yabancı kaynakta yazar ekran görüntülerini alıp kitaba konulmasını sağlamış. Ekran görüntüsünü alırken öyle özensiz davranıyorlar ki dikkatli incelerseniz şaşırırsınız. Örneğin yazarın birisi kitabında Visual Studio’nun ilk karşılaşılan penceresini okuruna göstermek için şöyle bir ekran görüntüsünü alıp kitabında kullanıyor.&lt;br /&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_1.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Tabi bu ekran görüntüsünün orijinal genişliği çok fazla olduğu için ancak %50-60 oranında küçültüldüğü zaman kitaba sığabiliyor. Bu durumda ekran görüntüsünün üzerindeki yazıları ve pencere başlıklarını çıplak gözle okuyabilmek mümkün olamıyor. Memik Yanık tarafından kaleme alınan kitaplarda ise bu ekran görüntüsü aşağıdaki gibi olmaktadır. Tabi bu ekran görüntüsü kitapta fazla yer kaplamasın diye belli bir oradan küçültülüp öyle kullanılırdı. &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_2.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: TR; mso-fareast-language: TR; mso-bidi-language: AR-SA"&gt;&lt;br /&gt;Gerçekte yazdığım kitaplarda bu tip ekran görüntüleri daha küçüktür. Sanırım ne demek istediğim anlaşıldı. Ekran görüntüleriyle ilgili olarak yapılan bir başka yanlış ise şudur. Yazarımızın(yerli veya yabancı) MessageBox sınıfının &lt;b style="mso-bidi-font-weight: normal"&gt;Show&lt;/b&gt;() metodundan söz ettiğini varsayalım. Yazarımız kitabında muhtemelen aşağıdaki gibi bir ekran görüntüsü kullanır. &lt;br /&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_3.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Dikkat edilirse bu ekran görüntüsü çok büyük değildir ve kitapta fazla yer kaplamaz. Birçoklarınıza bu normal gelir. Hal bu ki yukarıda verilen ekran görüntüsü %50-60 küçültülürken bu ekran görüntüsü olduğu gibi bırakılmış ve orijinal büyüklüğüyle kullanılmıştır. Yani ne büyütülmüş ne de küçültülmüştür. Bu ekran görüntüsü Memik Yanık tarafından yazılan bir kitapta kullanılsaydı aşağıdaki gibi olurdu. Çünkü Memik Yanık kitaplarında kullandığı bütün ekran görüntülerini %30 ile 35 arasında değişen oranlarda küçültüp öyle kullanmaktadır. Çünkü Memik Yanık için en önemli parametre ekran görüntülerinin üzerindeki yazıların çıplak gözle ve gözlerinde bozukluk olmayanlar tarafından kolaylıkla okunabilmesidir. &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_4.jpg" /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Belki en doğrusu ekran görüntülerinin boyutları hakkında bilgi verirken yerli yabancı birkaç kitapta kullanılan ekran görüntülerini buraya alıp üzerinde konuşmak olurdu. Ancak bu tercih Memik Yanık’ın suçlanmasına neden olurdu:Yazarlık dersi adı altında başka yazarların eksikliklerini bize anlatıyorsun derlerdi. Tam bu noktada bir yıl önce karşılaştığım trajik komik durumu size anlatacağım. Programcılık konulu bir forumda üyenin birisi bir programcılık kitabı hakkında bilgi istiyordu. Başka bir deyişle ilgilendiği kitabı satın almadan önce forumun diğer üyelerinin görüşlerini almak istemişti. Konu dallanıp budaklanınca “söz konusu kitap elime geçince ciddi bir incelemeden geçirip fikirlerimi sizlerle paylaşırım” demiştim. Aradan henüz yarım saat geçmemişken bir mail aldım: Maili gönderen söz konusu kitabı yayınlayan firmanın avukatıydı. Kitap hakkında konuşursam beni dava edeceklerini beyan ediyordu. Yani henüz görmediğim, içeriğinden haberdar olmadığım bir kitabın tanımadığım yazarı kitabı hakkında ileri ki günlerde bir şeyler yazmamı istemiyordu avukat bey. İşin garip tarafı bu mail bana ulaştıktan sonra birkaç ay sonra kitabı inceleme imkanım oldu. Baktım yazar konuya hakim ama bazı anlatım ve konuları sıralama sorunları var. Eğer o kitap hakkında yazsaydım adım gibi eminim ki yazar kitabının ikinci baskısında büyük değişikliklere giderdi. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Şimdi ise 2. bir olayı anlatacağım. Bir gün bir yayınevinde oturuyordum. İçeriye kendisini tanımayıp ancak C üzerinde yazdığı kitaptan dolayı adını bildiğim bir yazar geldi. Tanışma faslından hemen sonra yazar arkadaş gitti kitabının örneğini alıp geldi. Çünkü yakın bir zamanda kitabının yeni basımını hazırlamak istiyordu. Kitabında yapacağı ekleme veya çıkarmalar konusunda fikirlerimi almak istiyordu. Yarım saat içinde kitabının bazı sayfalarını inceledim kendisine önerilerde bulundum. Oldukça tecrübeli yazarımız bu önerileri tek tek not alıp gitti. Yarım saat içinde kitapta görebildiğim eksikleri, aksaklıkları saymıştım. Çünkü yazar arkadaşın amacı kitabını daha iyi yapmaktı, amacı övgü duymak değildi. &lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Ekran Görüntüleri Nasıl Kullanılmalıdır? &lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Kitap metni içinde kullanılan ekran görüntülerinin büyüklüklerinden biraz söz ettikten sonra şimdi sırada ekran görüntülerini kullanma sıklığı ve işlevinin üzerinde biraz durmak gerekecek. 1995 yılında DOS ve Windows 3.1 ağırlıklı &lt;b style="mso-bidi-font-weight: normal"&gt;Herkes İçin Bilgisayar&lt;/b&gt; kitabımı yayınladığım günlerde bilgisayar ve programcılık kitaplarında ekran görüntüsü kullanımı pek yaygın değildi. Çünkü DOS ortamında ekran görüntüsü almak zahmetliydi. O zamanlarda kitaplarda ekran görüntülerine yer vermeme kimse bir şey dememişti. Bırakın itiraz edilmesini bu kitaplar okurlardan yoğun ilgi görmüştü. Ne zaman ki kitaplarımın sayısı fazlalaştı saldırılar başladı. Bazıları çeviri yaptığımı söylerken bazıları “kitaplarında ekran görüntüsünden başka bir şey yok” diyorlardı. Tabii bunları söyleyenler genelde Memik Yanık kitabı okumamış ve Memik Yanık kitaplarına ihtiyaç duymayan kişilerdi. Memik Yanık’a kızıyorlardı, programcılık gibi teknik bir konunun bu kadar kolay öğrenilebilir olması insanları şaşırtıyordu. Neden Memik Yanık kitapları diğer yazarların kitaplarından daha kolay okunuyor, kolay anlaşılıyordu? Bu sorunun en kestirme cevabı; okuru ikna etmeye çalışırken karışık cümlelerden kaçınmak, yer yer ekran görüntülerini kullanmak, küçük tekrarlar yapmaktır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Şimdi gelelim asıl konumuza. Yani ekran görüntüleri nerede nasıl kullanılmalıdır sorusuna cevap arayalım. &lt;/span&gt;&lt;b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;Konumuz Delphi'de kod yazarak nesneleri ilk yerleştirildikleri formdan başka bir forma taşımak olsun.&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt; &lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;Amacınız okurun hayal gücünü geliştirmek değilse yapmak istediğiniz işlemi veya amacımızı bir iki cümle ile ortaya koyduktan sonra 2 forma sahip bir Delphi projesi hazırlarsınız. Tabii kitabınızı &lt;span style="mso-bidi-font-weight: bold"&gt;şişirmeme&lt;/span&gt; gibi bir kaygınız varsa veya ekran görüntüleri konusunda özenli davranmayı ilke edinmişseniz kitap metni içinde ekran görüntüsü olarak kullanacağınız formların boyutlarına dikkat edersiniz. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bazıları çıkıp diyecekler ki yukarıda bold yapılan cümle yeterince açık değil mi? Okurunuz tıpkı üniversite seçme sınavındaki gibi konuya odaklanmışsa bu cümlenin yeterince açık ve anlaşılır olduğu söylenebilir. Daha doğrusu kolay okunma diye bir kaygınız yoksa veya hemen anlaşılma, hızlı okunma amaçlarınız yoksa yukarıdaki cümleden sonra formdan forma nesne taşıyan Delphi kodunu verirsininiz olur biter. Bu durumda yazılanların programlama dilinin help metinlerinden bir farkı olmaz. Aşağıda verilen metni kendi cümlelerimle yazmış olmakla birlikte kaleme alırken başka yazarları taklit etmeye çalıştım. Konunun devamında ekran görüntülerini kullanıp kendi tarzımda anlatacağım. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Tam noktada Delphi ile ilgisi olmayan yazarlar ve yazar adayları için 2 cümle yazmam gerekiyor: Aşağıda hiç ilgilenmediğiniz, belki de bundan sonra hiç ilgilenmeyeceğiniz bir programla dili hakkında son derece teknik bir işlem hakkında bilgi verilmektedir. Bazı arkadaşlar tam bu noktada Delphi ile ilgili sayfaları atlayacaklardır. Nasıl ki lisede verilen matematik derslerinde ikide bir söylenip “türevin integralin gerçek hayatta bana ne faydası olacak, hangi işlemi yaparken kullanacağım?” diye fikirlerini beyan edenler bilim üretebilme becerisine sahip kişiler değillerse Delphi konulu bu metni okuma zahmetine katlanamayacak olanların iyi yazar olabilmeleri şüphelidir. Yazar olmak istiyorsanız, yazdıklarınız anlaşılsın istiyorsanız öncelikle yabancısı olduğun konuları okuyabilme sabrını göstermeniz gerekir. Üzerinde konuşacağım örnek metni italik yaptım. &lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Delphi'de bir formdaki nesneleri veya kontrolleri başka bir forma taşırken &lt;b&gt;RemoveComponent&lt;/b&gt; ve &lt;b&gt;InsertComponent&lt;/b&gt; metotları kullanılmaktadır. Form1'deki Edit1 ve Edit2’nin &lt;b&gt;Parent&lt;/b&gt; özelliklerinde değişiklik yapılırsa Form2’nin üzerinde görüntülenirler. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;  Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;  Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Şimdi ise Form2’de görüntülenen bu 2 nesnenin For1’den silinmesini sağlayacağım. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.SilClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Components[1].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Components[0].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Bu 2 satır sayesinde Form1’deki ilk 2 kontrol silinir. Koda dikkat ederseniz Edit1 ve Edit2 nesneleri Form2’nin üzerinde görünürken bu kontroller henüz Form1’e aittir veya Edit1 ile Edit2’nin sahibi Form1’dir. Bu nedenle Free metodu ile silme işlemini yaparken Form2 yerine Form1’ın adını yazdım. Şimdi &lt;b&gt;RemoveComponent&lt;/b&gt; ve &lt;b&gt;InsertComponent&lt;/b&gt; metotlarını bir yordama alıp öyle işleteceğim. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.Uzaklastir(Bilesen: TComponent; Sahip: TComponent);&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Bilesen.Owner.RemoveComponent(Bilesen); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Sahip.InsertComponent(Bilesen); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;“Uzaklastir” adını verdiğim yordamı bu şekilde hazırladıktan sonra aşağıdaki gibi hazırlık yaptım. Bu kod sayesinde Form1’deki 2 Edit Form2’ye aktarılır.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Uzaklastir(Edit1, Form2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;  Uzaklastir(Edit2, Form2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Aslında bu metin Delphi konusunda ortalama bilgiye sahip olanlar için son derece anlaşılırdır. Ne var ki Delphi uzmanları dönüp bu metne bakmazlar bile. Onların burada yazılanları anlamaları için metindeki kod satırlarına uzaktan bir kaç saniye bakmaları yeterlidir. Biz yazarlar uzmanlar için kitap yazmadığımız için, başka bir deyişle yazdıklarımızla hiç ilgilenmeyecekleri baştan belli olanları gözeterek konuları kaleme almadığımız için uzmanların böyle bir metin karşısındaki yaklaşımlarını ölçü almayız. Hemen söyleyeyim ki yukarıda verilen kısacak metin ve birkaç satırlık kod Delphi'nin bileşen kavramının temelini oluşturuyor. Bu nedenle oldukça önemlidir. Önemli olduğu için de okurun yazılanları kavraması için ek açıklamalar yapılmalıdır. Üstelik bu ek açıklamalar pat diye yapılmamalıdır. Okur öncelikle olası sorunlarla yüz yüze getirilmelidir. Okur formlar arası nesne taşıma konusunda karşılaşacağı sorunlar hakkında bilgi sahibi yapıldıktan sonra çözümden söz edilmelidir. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu metni okuyan kişi Delphi uzmanı değilse(ki Delphi uzmanı zaten böyle bir metne dönüp bakmaz) yapılan işlemlerin geri planını merak eder. Belki de işin içinden çıkamaz. Bu konu bu şekilde anlatıldığı zaman anlaşılmama olasılığına karşı, başka bir deyişle anlaşılmayı garanti etmek için bu konuyu aşağıdaki gibi anlatmayı tercih ettim. Bu şekilde düzenlenen metni hızlıca bir kez okursunuz. İkna olup zaman kaybetmeden konuyu kavramış halde başka konuya geçersiniz. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Delphi hakkında ortalamanın üzerinde bilgisi olan birisi bu metni gördüğünde büyük bir ihtimalle “yazar kitabı &lt;b&gt;şişirmiş&lt;/b&gt;, sayfaları ekran görüntüleri ile doldurmuş” diyecektir. Programcılığı meslek olarak seçmiş olanların ve programcılık üzerine yazanların gözden kaçırdıkları önemli bir nokta var: Programcılar hayal güçleri olağanüstü kişiler değildir. Bu nedenle zaman zaman ekran görüntülerine yer verip konudan kopmalarının önüne geçmek gerekir. &lt;br /&gt;&lt;/span&gt;&lt;b&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-family: Tahoma"&gt;&lt;br /&gt;Nesneleri Bir Formdan Diğerine Taşımak &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Delphi projelerinde bir formdaki kontrolleri başka bir forma taşırken &lt;b&gt;RemoveComponent&lt;/b&gt; ve &lt;b&gt;InsertComponent&lt;/b&gt; metotları kullanılmaktadır. Bu 2 metodun nasıl kullanıldığını anlatmak için 2 forma sahip bir proje hazırladım. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_5.jpg" /&gt; &lt;img src="/images/cs_makale/yazarlik_ders_2_6.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bu ekran görüntüsü kitap veya makale metni içinde yaklaşık 5 satırlık yer kaplamaktadır. Başka bir deyişle kitapta bu büyüklükte bir ekran görüntüsüne yer verildiği zaman kitap metni 5 satırlık bir paragraf kadar artmış olur. Yazarın bu ekran görüntüsünü 2 satırda tarif edeceğini düşünürsek kitapta bu ekran görüntüsüne yer verilmekle gerçekte kitap metni 3 satır kadar artmış oluyor. Çünkü yukarıda verdiğim metne bakarsanız “2 forma sahip proje hazırladım” demekle yetindim. Eğer ekran görüntüsüne yer vermeseydim okurun hayal gücüne yaslanıp ekran görüntüsü verilen 2 formu uzun uzun tarif etmem gerekecekti. Tabi bazı yazarlar özensiz davranıp sanki artı bir faydası olacakmış gibi ekran görüntülerini kocaman alıyorlar sonra da küçültüyorlar. Bu durumda ekran görüntüsündeki yazıları okumak için büyütece gerek duyuluyor. &lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Çalışma anında ilk formdaki “Göster” düğmesi tıklandığında “Form2” ekrana getirilecek. Bu amaçla Unit2’yi &lt;b&gt;Uses&lt;/b&gt; bloğunda Unit1’e dahil ettikten sonra “Goster” düğmesi için aşağıda verdiğim kodu yazdım.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.GosterClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form2.Show; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Çalışma anında “Aktar” düğmesi tıklandığında ise Edit1 ve Edit2’nin &lt;b&gt;Parent&lt;/b&gt; özelliklerinde değişiklik yapılıp Form2’nin üzerinde görüntülenmesini sağlayacağım. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;span style="COLOR: #000000"&gt;&lt;br /&gt;Aşağıda verilen ekran görüntüsünü önce “Göster”, sonra “Aktar” düğmelerini tıkladıktan sonra aldım. Bu sırada Edit1 ve Edit2 projedeki 2. formun üzerinde görünüyor olsalar bile bu 2 nesnenin sahibi henüz Form1’dir.&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;img src="/images/cs_makale/yazarlik_ders_2_7.jpg" /&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Gerçekte tam bu noktada Delphi programcıları için önemli bir konu var: Edit nesneleri Form2’nin üzerinde görünürken sahibi henüz Form1’dir. Bu ekran görüntüsü sayesinde okurun bu önemli noktaya dikkati çekilmektedir&lt;i style="mso-bidi-font-style: normal"&gt;. &lt;/i&gt;Bu ekran görüntüsü kullanılmasaydı okur belki aynı metni 2 kez okumak zorunda kalacaktı. &lt;br /&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Çalışma anında “Sil” düğmesi tıklandığında Form2’de görüntülenen ilk 2 nesnenin Form1’den silinmesini sağlayacağım. Bu amaçla ilk formdaki “Sil” düğmesinin Click olayıyla ilgili metodu aşağıdaki gibi düzenledim.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.SilClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Components[1].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Components[0].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;“Sil” düğmesinin Click olayını temsil eden metoda yazılan bu 2 satır sayesinde Form1’deki ilk 2 kontrol silinir. Koda dikkat ederseniz Edit1 ve Edit2 nesneleri Form2’nin üzerinde görünürken bu kontroller henüz Form1’e aittir veya Edit1 ile Edit2’nin sahibi Form1’dir. Bu nedenle &lt;b&gt;Free&lt;/b&gt; metodu ile silme işlemini yaparken Form2 yerine Form1’ın adını yazdım. Burada yapılması gereken &lt;b&gt;Parent&lt;/b&gt; özelliği ile nesnenin görüntülenmesinden sorumlu olacak formu(yani sınıfı) değiştirdikten sonra &lt;b&gt;Owner&lt;/b&gt; özelliğini de değiştirmektir. Bu işlemi yapmak için aşağıda verdiğim kodu yazdım.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit1.Owner.RemoveComponent(Edit1); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form2.InsertComponent(Edit1); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit2.Owner.RemoveComponent(Edit2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form2.InsertComponent(Edit2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Bu kod hakkında bilgi vermeden bu kodun hataya neden olacağını söylemeliyim. Bu kodda önce Form1’deki “Edit1” nesnesi &lt;b&gt;RemoveComponent&lt;/b&gt; metodu ile Form1’den uzaklaştırılıp &lt;b&gt;InsertComponent&lt;/b&gt; metodu ile Form2’ye eklenmektedir. Ancak Edit’ler ve diğer nesneler RemoveComponent metodu ile Form1’den uzaklaştırıldığı anda bellekten silinmiş olmaktadır. Dolayısıyla olmayan bir nesneyi InsertComponent metoduna parametre olarak vermek hataya neden olur.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Bu sorunu gidermek için ilk akla gelen yöntem bu işlemi yapacak bir procedure hazırlamaktadır. Daha önce Türkiye’de yayınlanan bir kitapta bu yöntem anlatıldığı için öncelikle söz konusu Edit nesnesini RemoveComponent metodu ile Form1’den uzaklaştırmadan önce bir değişkene aktamayı tercih ettim. &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;Var &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   E :TEdit; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form1.Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   E := Form1.Edit1; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form1.Edit1.Owner.RemoveComponent(Edit1); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form2.InsertComponent(E); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form1.Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   E := Form1.Edit2; &lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   &lt;br /&gt;   Form1.Edit2.Owner.RemoveComponent(Edit2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;   Form2.InsertComponent(E); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Bu kod sayesinde Edit1 ve Edit2’nin Form1 sınıfıyla bir ilişkisi kalmaz. Bu kod işletildikten sonra Edit1 ile Edit2’nin hem Owner’ı hem de Parent’ı Form2 olur. Bu şartlarda, yani Form2’de yalnızca 2 nesne varken “Sil” düğmesi için yazılan kodda önce Edit2 silinmelidir yoksa hata meydana gelir.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.SilClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form2.Components[1].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form2.Components[0].Free; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;Şimdi ise RemoveComponent ve InsertComponent metotlarını bir metoda alıp öyle işlete­ceğim. Hazırlayacağım metot &lt;b&gt;TComponent&lt;/b&gt; tipinde 2 parametreye sahip olacaktır.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.Uzaklastir(Bilesen:TComponent;Sahip:TComponent); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Bilesen.Owner.RemoveComponent(Bilesen); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Sahip.InsertComponent(Bilesen); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="COLOR: #000000"&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana; mso-bidi-font-weight: bold"&gt;&lt;br /&gt;“Uzaklastir” adını verdiğim metodu bu şekilde hazırladıktan sonra “Aktar” düğmesinin Click olayını temsil eden metodu aşağıdaki gibi düzenledim. Bu kod sayesinde Form1’deki 2 Edit nesnesi Form2’ye aktarılır.&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;&lt;br /&gt;procedure TForm1.AktarClick(Sender: TObject); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;begin &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit1.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Form1.Edit2.Parent := Form2; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Uzaklastir(Edit1, Form2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;  Uzaklastir(Edit2, Form2); &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;i style="mso-bidi-font-style: normal"&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #0000ff; FONT-FAMILY: Consolas; mso-bidi-font-weight: bold; mso-bidi-font-family: 'Courier New'"&gt;end; &lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #000000; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Birinci anlatım daha kısa oldu. Delphi konusunda belli bir düzeye gelmiş kişilere, daha doğrusu artık kitap almayıp, Memik Yanık veya başka bir yazar tarafından kaleme alınmış metinlere dönüp bakmayanlara göre kısa olanı tercih etmek gerekir. Nasıl olsa onların bu konuyu öğrenme gibi bir dertleri yoktur. Yazar arkadaşım fazladan yazılan her kelime her cümle okur için zaman kaybıdır, kitabınızdan alınacak faydanın azalmasıdır. Ne var ki vur deyince öldürmemek gerekir, metin kısa olacak diye okunması zor, okunsa bile söylenenler anlamak zahmetli oluyorsa durup düşünüp metni yeniden kaleme almak gerekir. &lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: #0000ff; FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;&lt;br /&gt;Kod İçinde Açıklama Metni Kullanmak &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Bazı yerli ve yabancı yazarlar makalelerinde ve kitaplarında kullandıkları 15-20 satırlık yani yarım sayfalık kodun içine uzun uzun açıklamalar yerleştirerek söz konusu kodun 1,5-2 sayfa kadar uzamasını tercih ediyorlar. Kodun arasına uzun açıklamalar ekleyerek kolay anlaşılmak veya kodda kullanılan her satırın işlevinin okur tarafından hemen fark edilmesini istiyorlar. İlk bakışta sanki doğru bir terciymiş gibi görülür bu. Böyle bir tercih ile hazırlanan metni okumak bir bakıma dublajı bilmediğiniz bir dilde yapılmış olup bol konuşmalı alt yazılı bir filmi izlemeye benzer. Hele hele filmdeki karakterler hızlı konuşuyorlarsa bazen de aynı anda birden fazla kişi konuşuyorlarsa bütün alt yazıları okuyup filmi anlamak ağır bir işte çalışmak gibi yorucudur. Yani yazarlarımız kodun içine bol bol açıklama metni koyarken sanıyorlar ki okur konuyu daha kolay anlıyor, kodda yapılan işlemleri bir bakışta kavrıyor. &lt;br /&gt;&lt;br /&gt;Y&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;ıllardır yüz binlerce programcılık konulu sayfa okumuş birisi olarak söylemek isterim ki kodun içinde uzun açıklamalar yapmak kadar metni zor okunur yapan başka bir teknik yoktur. Elbette kodun içine açıklama metni yazılır, elbette dozunda tutulmuş açıklama metninin okura katkısı olur. Burada dikkat edilmesi gereken açıklama metinlerin kısa olması ve sayılarının fazla olmamasıdır. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Yazarın birisi daha önce hakkında hiç söz etmediği bir kavram veya anahtar kelime hakkında kodun içinde 3 satırlık yani neredeyse bir paragraflık açıklama metnine yer veriyor. Devamında bir sonraki kod satırı için tekrar açıklama metni kullanıyor. Başka bir deyişle kod satırları, kod satırlarını açıklayan metinlerin içinde kayboluyor. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; COLOR: #333333; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Açıkçası hazırladığınız 10 satırlık kodun 5-6 satırı için kod içinde açıklama metni hazırlıyorsanız okurunuzu o kod için hazırlamamışsınız, okurunuz o kodda kullanılan sınıflardan, metotlardan ve anahtar kelimelerden henüz habersizdir demektir. Yapılması gereken; kodda kullanılan sınıflar, anahtar kelimeler hakkında önceden okura bilgi verip ondan sonra kod hazırlamaktır. Kod içinde kullanılmasına rağmen daha önce söz edilmeyin veya okurun unutmuş olabilme ihtimali yüksek bir iki metot hakkında en fazla 3-4 kelimelik açıklama metinleri yararlı olabilir.&lt;br /&gt;&lt;br /&gt;*&lt;strong&gt;Bu metni yaklaşık 1 yıl önce yazıpilk kez memikyanik.com'da yayınlamıştım. Bütün teknik makaleleri memikyanik.net'e almak istediğim için gözden geçirip birkaç yazım hatasını düzeltip buraya aldım. Bu sayede daha önce memikyanik.com'da rastlamayanların istifadesine sunmuş olduk.&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://www.memikyanik.net/programcilar-icin-yazarlik-dersleri-2-yazisi/110.aspx</link><pubDate>Thu, 08 Oct 2009 00:30:22 GMT</pubDate></item><item><title>DataAdapter DataSet İlişkisi</title><description /><link>http://www.memikyanik.net/dataadapter-dataset-iliskisi-makalesi/108.aspx</link><pubDate>Mon, 05 Oct 2009 20:36:07 GMT</pubDate></item><item><title>NetworkInformation Sınıfı</title><description /><link>http://www.memikyanik.net/networkinformation-sinifi-makalesi/107.aspx</link><pubDate>Sun, 04 Oct 2009 00:15:27 GMT</pubDate></item><item><title>Kod Yazarak ListView Nesnesi  Hazırlamak</title><description /><link>http://www.memikyanik.net/kod-yazarak-listview-nesnesi-hazirlamak-makalesi/106.aspx</link><pubDate>Sat, 03 Oct 2009 15:07:58 GMT</pubDate></item><item><title>ArrayList Sınıfının FixedSize ve ReadOnly Metotları</title><description /><link>http://www.memikyanik.net/arraylist-sinifinin-fixedsize-ve-readonly-metotlari-makalesi/105.aspx</link><pubDate>Sat, 03 Oct 2009 14:58:16 GMT</pubDate></item><item><title>Delphi : 6. Ders : Adım Adım Class Hazırlamak(*)</title><description /><link>http://www.memikyanik.net/delphi-6-ders-adim-adim-class-hazirlamak-makalesi/104.aspx</link><pubDate>Sat, 03 Oct 2009 14:26:38 GMT</pubDate></item><item><title>Kod Yazarak Formların İkonunu Değiştirmek</title><description /><link>http://www.memikyanik.net/kod-yazarak-formlarin-ikonunu-degistirmek-makalesi/103.aspx</link><pubDate>Sat, 03 Oct 2009 14:01:47 GMT</pubDate></item><item><title>DES Algoritması İle Şifreleme Yapmak</title><description /><link>http://www.memikyanik.net/des-algoritmasi-ile-sifreleme-yapmak-makalesi/102.aspx</link><pubDate>Wed, 30 Sep 2009 19:25:14 GMT</pubDate></item><item><title>WindowsFormsApplicationBase Sınıfı(*)</title><description>&lt;span style="FONT-SIZE: 10pt"&gt;&lt;span style="FONT-FAMILY: Verdana"&gt;Bu makalede kısaca sözü edilen &lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="COLOR: windowtext"&gt;Microsoft.VisualBasic.ApplicationServices&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Verdana"&gt;’deki &lt;b style="mso-bidi-font-weight: normal"&gt;WindowsFormsApplicationBase&lt;/b&gt; sınıfından yararlanarak C# uygulamasının başlangıç ve açılış formuyla ilgili bazı işlemleri kolayca yapmak mümkündür. Bu sınıf daha çok Visual Basic programcıları tarafından kullanılan bir sınıftır. &lt;/span&gt;</description><link>http://www.memikyanik.net/windowsformsapplicationbase-sinifi-makalesi/101.aspx</link><pubDate>Wed, 30 Sep 2009 10:00:23 GMT</pubDate></item><item><title>Gelin Suç İşleyip C# Uygulamamıza Excel Desteğini Verelim(*)</title><description /><link>http://www.memikyanik.net/gelin-suc-isleyip-csharp-uygulamamiza-excel-destegini-verelim-makalesi/100.aspx</link><pubDate>Thu, 17 Sep 2009 22:35:19 GMT</pubDate></item><item><title>C++ 1. Ders -  Derleyici Seçmek ve Kurmak</title><description /><link>http://www.memikyanik.net/c-1-ders-derleyici-secmek-ve-kurmak-makalesi/99.aspx</link><pubDate>Thu, 06 Aug 2009 02:47:23 GMT</pubDate></item><item><title>Görsel Dersler Hazırlamaya Başladım..</title><description /><link>http://www.memikyanik.net/gorsel-dersler-hazirlamaya-basladim-makalesi/98.aspx</link><pubDate>Wed, 05 Aug 2009 09:18:49 GMT</pubDate></item><item><title>ASP.NET'te Cookie'ler(*)</title><description /><link>http://www.memikyanik.net/aspnette-cookieler-makalesi/97.aspx</link><pubDate>Tue, 04 Aug 2009 19:26:10 GMT</pubDate></item><item><title>C# Uygulamalarında Thread'ler(*)</title><description /><link>http://www.memikyanik.net/csharp-uygulamalarinda-threadler-makalesi/96.aspx</link><pubDate>Wed, 29 Jul 2009 08:50:45 GMT</pubDate></item><item><title>Delphi : 5. Ders; Class'lar Hakkında Önbilgi</title><description /><link>http://www.memikyanik.net/delphi-5-ders-classlar-hakkinda-onbilgi-makalesi/95.aspx</link><pubDate>Mon, 27 Jul 2009 19:04:23 GMT</pubDate></item><item><title>Konsol Uygulamasında Form Hazırlamak</title><description /><link>http://www.memikyanik.net/konsol-uygulamasinda-form-hazirlamak-makalesi/94.aspx</link><pubDate>Mon, 20 Jul 2009 21:10:44 GMT</pubDate></item><item><title>Delphi : 4. Ders; VCL Form Application</title><description /><link>http://www.memikyanik.net/delphi-4-ders-vcl-form-application-makalesi/93.aspx</link><pubDate>Sat, 18 Jul 2009 18:53:37 GMT</pubDate></item><item><title>Visual Basic 7. Ders : Temel Veritabanı İşlemleri</title><description /><link>http://www.memikyanik.net/visual-basic-7-ders-temel-veritabani-islemleri-makalesi/92.aspx</link><pubDate>Wed, 08 Jul 2009 07:24:05 GMT</pubDate></item><item><title>C#'a Başlangıç Kitabının Genişletilmiş 2. Edisyonu Hazır</title><description>&lt;span style="FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Bildiğiniz gibi C# ve programcılığa henüz başlayanlar için şimdiye kadar toplam 7 makale hazırlayıp burada yayınladım. Sonra bu makaleleri bir PFD'de bir araya getirdim. Aradan geçen 6 aylık sürede gelen talepler doğrultusunda PDF'yi elden geçirip eklemeler yaptım. Bu PDF'nin yeni halini &lt;/span&gt;&lt;a href="http://www.memikyanik.com/download/csharp_e_book.rar"&gt;&lt;u&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: #0000ff"&gt;buradan &lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;span style="FONT-SIZE: 10pt"&gt;indirebilirsiniz. Bu PDF'nin önsözü aşağıdadır.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-FAMILY: Verdana"&gt;&lt;span style="FONT-SIZE: 12pt"&gt;                                                                        Önsöz &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;Son yazdığım C# kitabımda başlangıç düzeyi konuların ağırlığını azaltmayı tercih ettiğim için C# konusunda henüz yolun başında olanlar zorluk çekmesin diye birkaç makale hazırlayıp kişisel sitemde yayınladım. Sonra bu makaleleri elden geçirip e-book haline getirdim. E-book’larda sayfa sınırlaması olmadığı için metni az sayfaya sığdırma gibi bir kaygım olmadı. Başka bir deyişle bu e-book’u yakın zamanda yayınlanan C# 3.0 kitabıma yardımcı veya hazırlayıcı bir kitap olarak değerlendirmek mümkündür. &lt;br /&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Bu e-book’u inceleyenlerin fark edeceklerini sandığım bir diğer konu ise C# gibi bir programlama dilinin nasıl kolay anlatıldığını görmeleri olacaktır. Başka bir deyişle bu metin için rahatlıkla “dünyanın e kolay okunan C# kitabı” denilebilir. Yıllardır Memik Yanık’ı hep başlangıç düzeyi kitaplar yazmakla suçlayanlar bakalım bu e-book’u gördüklerinde neler söyleyecekler? &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Yıllardır kendisini bilen bilmeyen birçok kişi Memik Yanık’ı çeviri yapmakla suçluyor. Memik Yanık’ın İngilizcesinin çeviri yapmaya yetmediği gerçeğini bir tarafa bırakalım ve şu soruyu sorayım: Madem Memik Yanık Türkçeye bu kadar hakim ve yazdıkları kolay okunuyor hangi akla hizmet yabancı bir yazarın kitabında çeviri yapar? Hem Memik Yanık İngilizceyi anadili gibi bilse bile hangi mantıkla kendine özel cümle kurmak yerine gidip başka bir yazarın cümlelerini alır? &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Bu e-book’ta kenar boşlukları normal basılı kitaplara göre daha azdır, fontu ise daha büyüktür. Dolayısıyla bu metni normal kitap olarak değerlendirmek istemiş olsaydım sayfa sayısı aşağı yukarı aynı olurdu. E-book’un sonunda C# 3.0 kitabım hakkında yazdığım bir yazı ve C# 3.0 kitabımdan alınma bir bölüm bulunmaktadır. &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;b style="mso-bidi-font-weight: normal"&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt"&gt;2. Edisyon İçin Ek&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="FONT-SIZE: 11pt; FONT-FAMILY: Verdana"&gt;&lt;br /&gt;&lt;span style="FONT-SIZE: 10pt"&gt;Bu PDF’yi ilk yayınladığım günden bu yana aradan geçen 6 aylık süre içinde bana gelen talepler doğrultusunda bu e-book’a veritabanı işlemleri hakkında bilgi içeren bir bölüm eklemeye karar verdim. Bu amaçla oturup &lt;b style="mso-bidi-font-weight: normal"&gt;Temel Veritabanı İşlemleri&lt;/b&gt; adlı bir bölüm hazırlayıp PDF’ye ekledim ve bazı küçük değişiklikler yaptım. Bu hali ile bu E-Book programcılığa C# ile başlayanlar için daha işlevsel olmaya başladı. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;</description><link>http://www.memikyanik.net/csharpa-baslangic-kitabinin-genisletilmis-2-edisyonu-hazir-yazisi/91.aspx</link><pubDate>Tue, 07 Jul 2009 20:29:31 GMT</pubDate></item><item><title>Assembly'deki Gömülü Kaynakları Okumak</title><description /><link>http://www.memikyanik.net/assemblydeki-gomulu-kaynaklari-okumak-makalesi/90.aspx</link><pubDate>Tue, 07 Jul 2009 08:32:04 GMT</pubDate></item></channel></rss>