{"id":142,"date":"2019-09-30T22:04:45","date_gmt":"2019-09-30T19:04:45","guid":{"rendered":"http:\/\/www.potansif.com\/?p=142"},"modified":"2020-01-23T23:49:04","modified_gmt":"2020-01-23T20:49:04","slug":"delphide-dokumantasyon-nasil-yapilir","status":"publish","type":"post","link":"http:\/\/www.potansif.com\/?p=142","title":{"rendered":"Delphi&#8217;de Dok\u00fcmantasyon Nas\u0131l Yap\u0131l\u0131r"},"content":{"rendered":"<p>Elbette bir \u00e7ok yol ile yap\u0131labilir. Document Insight gibi \u00fccretli veya HelpNDoc gibi ki\u015fisel kullan\u0131m i\u00e7in \u00fccretsiz olan baz\u0131\u00a0ara\u00e7lar da kullanabilirsiniz fakat yeteri kadar \u00f6zen g\u00f6stermekten uzaksan\u0131z, bunun i\u00e7in sadece Notepad bile i\u015finizi g\u00f6recektir. Benim hedef kitlem malesef bu y\u00f6ntemi tercih edenler olamayacak \ud83d\ude42<\/p>\n<p>Espri bir yana, gelecekteki siz i\u00e7in veya kodunuzu okuyacak olan di\u011fer i\u015f arkada\u015flar\u0131n\u0131z i\u00e7in bilgi notlar\u0131 b\u0131rakabilece\u011finiz bir mekanizmay\u0131 Delphi hali haz\u0131rda zaten destekliyor. Bu mekanizmay\u0131 kullanarak metodlar\u0131n\u0131z ve s\u0131n\u0131flar\u0131n\u0131z i\u00e7in basit anlamda tan\u0131t\u0131c\u0131 bilgiler verebilece\u011finiz veya bu alt yap\u0131y\u0131 kullanarak programc\u0131 k\u0131lavuzlar\u0131 haz\u0131rlayabilece\u011finiz bir mekanizma oldu\u011funu biliyor muydunuz? Bu mekanizman\u0131n ad\u0131 &#8220;<b>XML Documentation Comments<\/b>&#8221; olarak literat\u00fcre ge\u00e7mi\u015f durumda&#8230;<br \/>\n<!--more--><br \/>\nBu yaz\u0131da basit bir \u015fekilde ba\u015ftan sona bir d\u00f6k\u00fcmantasyon\u00a0belgesini nas\u0131l yapabilece\u011finizi g\u00f6stermeye \u00e7al\u0131\u015faca\u011f\u0131m. Burada anlat\u0131lan teknikler Delphi&#8217;de tan\u0131mlad\u0131\u011f\u0131n\u0131z her\u015fey i\u00e7in ge\u00e7erlidir. Kapsam\u0131 ise son kullan\u0131c\u0131lar de\u011fil, tamamen programc\u0131lar i\u00e7indir. Dilin bir \u00e7ok yap\u0131s\u0131n\u0131 i\u00e7inde bar\u0131nd\u0131rabildi\u011fi i\u00e7in \u00f6zellikle bir\u00a0s\u0131n\u0131f \u00fczerinde bunu \u00f6rneklendirmeyi do\u011fru buldum fakat anla\u015f\u0131lmas\u0131 zor bir hal alaca\u011f\u0131 i\u00e7in Record&#8217;larla yetinmeyi tercih ettim. Siz bir sabit, bir de\u011fi\u015fken, bir kay\u0131t (record), bir s\u0131n\u0131f, bir fonksiyon veya prosed\u00fcr \u00fczerinde de bunlar\u0131 tan\u0131mlayabilirsiniz. Tekni\u011fin tamam\u0131 bunlar i\u00e7in de ge\u00e7erlidir.<\/p>\n<p>\u00d6ncelikle bu, \u00f6z\u00fcnde bir XML diyalekti\u011fidir ve (t\u0131pk\u0131 C#&#8217;da da oldu\u011fu gibi) Pascal kodlar\u0131 i\u00e7inde XML taglar\u0131n\u0131 do\u011frudan kullanamayaca\u011f\u0131m\u0131z i\u00e7in D\u00f6k\u00fcmantasyona ait XML taglar\u0131n\u0131n ba\u015f\u0131na (t\u0131rnaklar hari\u00e7) &#8220;\/\/\/&#8221; i\u015faretlerini ekliyoruz. Ard\u0131ndan taksonomide ge\u00e7en taglar arac\u0131l\u0131\u011f\u0131yla INTERFACE b\u00f6l\u00fcm\u00fcnde d\u00f6k\u00fcmantasyonumuzu ger\u00e7ekle\u015ftiriyoruz.<\/p>\n<p>Bu arada, ayn\u0131 taksonomiyi C# dilinde de kullanabilirsiniz, muhtemelen orada da d\u00f6k\u00fcman \u00fcretme arac\u0131 vard\u0131r. C#&#8217;da d\u00f6k\u00fcmantasyona ilgi duyan arkada\u015flar\u0131m i\u00e7in a\u015fa\u011f\u0131daki link bir ba\u015flang\u0131\u00e7 noktas\u0131 olabilir;<\/p>\n<p><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/programming-guide\/xmldoc\/how-to-use-the-xml-documentation-features\">https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/programming-guide\/xmldoc\/how-to-use-the-xml-documentation-features<\/a><\/p>\n<p>Konuya d\u00f6necek olursak, basit bir \u00f6rnek ile i\u015fe ba\u015flayal\u0131m. Normalde bir sabiti tan\u0131mlarken const ifadesinden sonra sabitin ad\u0131n\u0131 ve e\u015fitli\u011fin sa\u011f\u0131na da de\u011ferini yaz\u0131yoruz ve normalde a\u015fa\u011f\u0131daki gibi g\u00f6z\u00fck\u00fcyor;<\/p>\n<pre><code>const\r\n \u00a0Pi = 3.14159;\r\n<\/code><\/pre>\n<p>D\u00f6k\u00fcmantasyon ile ilgili taksonomiyi kulland\u0131\u011f\u0131m\u0131zda ise kod, \u015fu \u015fekle b\u00fcr\u00fcn\u00fcyor;<\/p>\n<pre><code>const\r\n \u00a0\/\/\/ &lt;summary&gt;\r\n \u00a0\/\/\/ \u00a0 Pi say\u0131s\u0131n\u0131 temsil eder.\r\n \u00a0\/\/\/ &lt;\/summary&gt;\r\n \u00a0\/\/\/ &lt;value&gt;\r\n \u00a0\/\/\/ \u00a0 3.14159\r\n \u00a0\/\/\/ &lt;\/value&gt;\r\n \u00a0\/\/\/ &lt;remarks&gt;\r\n \u00a0\/\/\/ \u00a0 Pi say\u0131s\u0131, bir dairenin \u00e7evresinin \u00e7ap\u0131na b\u00f6l\u00fcm\u00fc ile elde edilen\r\n \u00a0\/\/\/ \u00a0 irrasyonel matematik sabiti'dir. \u0130smini, Yunanca s\u00f6zc\u00fc\u011f\u00fcn\u00fcn ilk harfi\r\n \u00a0\/\/\/ \u00a0 olan \"?\" den al\u0131r. Pi say\u0131s\u0131, Ar\u015fimet sabiti ve Ludolph say\u0131s\u0131 olarak\r\n \u00a0\/\/\/ \u00a0 da bilinir.\r\n \u00a0\/\/\/ \u00a0A\u015fa\u011f\u0131daki \u00f6rnek kod bir radyan\u0131n ka\u00e7 derece oldu\u011funu hesaplar.\r\n \u00a0\/\/\/ \u00a0<code lang=\"Delphi\">x := 1 * (180 \/ Pi);<\/code> \u00a0\/\/\/ &lt;\/remarks&gt; \u00a0\/\/\/ &lt;seealso href=\"https:\/\/tr.khanacademy.org\/math\/algebra2\/trig-functions\/intro-to-radians-alg2\/v\/we-converting-radians-to-degrees\"&gt; \u00a0\/\/\/ \u00a0 Radyan\u0131 Dereceye D\u00f6n\u00fc\u015ft\u00fcrme \u00a0\/\/\/ &lt;\/seealso&gt; \u00a0Pi = 3.14159;<\/code><\/pre>\n<p>XML&#8217;e vak\u0131fsan\u0131z yukar\u0131daki \u00f6rnekte baz\u0131 taglar\u0131n kullan\u0131ld\u0131\u011f\u0131n\u0131 fark etmi\u015fsinizdir. S\u0131ras\u0131yla bunlar\u0131n ne anlama geldi\u011fini yaz\u0131n\u0131n devam\u0131nda zaten inceleyece\u011fiz fakat ondan \u00f6nce, bu kadar kodun pratikte bizim ne i\u015fimize yarayaca\u011f\u0131n\u0131 da g\u00f6rsel olarak incelemekte de\u00a0fayda var. RAD IDE&#8217;nin &#8220;<b>Help Insight<\/b>&#8221; \u00f6zelli\u011fini aktif ettiyseniz, fareyi bir identifier veya variable&#8217;nin \u00fczerinde bekletti\u011finizde bir hint arac\u0131l\u0131\u011f\u0131yla o kod ile ilgili bir yard\u0131m baloncu\u011fu g\u00f6z\u00fck\u00fcr. T\u0131pk\u0131 a\u015fa\u011f\u0131daki gibi;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-355\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/1.png\" alt=\"\" width=\"519\" height=\"452\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/1.png 519w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/1-300x261.png 300w\" sizes=\"auto, (max-width: 519px) 100vw, 519px\" \/><\/p>\n<p>\u0130\u015fte bu taksonomi temelde bu i\u015fe yar\u0131yor. Bunun faydalar\u0131 \u00fczerinde biraz d\u00fc\u015f\u00fcnelim ve di\u011fer faydalar\u0131na da g\u00f6z atal\u0131m;<\/p>\n<ul>\n<li>E\u011fer bir ekip halinde \u00e7al\u0131\u015f\u0131yorsan\u0131z bu \u00f6zellik \u00e7ok kritik bir de\u011fere sahip, ekip \u00fcyelerinin hepsinin ayn\u0131 kod \u00f6zelinde ayn\u0131 \u015feyi anlamas\u0131na yard\u0131mc\u0131 olan bir ara\u00e7 olarak kendisini g\u00f6steriyor.<\/li>\n<li>Bununla, ileriki zamanlara y\u00f6nelik bir hat\u0131rlatma i\u015flevi de kazan\u0131yoruz. Yani ge\u00e7mi\u015fte yazd\u0131\u011f\u0131n\u0131z eski bir kod ile ilgili hat\u0131rlanmas\u0131 gereken kritik noktalar\u0131 bu sayede sistemli bir hale getirmi\u015f oluyoruz.<\/li>\n<li><b>Model Viewer<\/b> arac\u0131l\u0131\u011f\u0131yla HTML Help dosyas\u0131 da \u00fcretebiliyorsunuz.<\/li>\n<li>E\u011fer <b>Documentation Insight<\/b> gibi \u00fccretli bir eklenti kullan\u0131yorsan\u0131z, \u00e7e\u015fitli formatlarda (HLP,\u00a0CHM vs&#8230;)\u00a0programc\u0131 k\u0131lavuzlar\u0131 da \u00fcretebiliyorsunuz.<\/li>\n<li>B\u00f6yle bir yap\u0131y\u0131 kullanarak eskiden yazd\u0131\u011f\u0131n\u0131z kodlar\u0131 anlamakla zaman kaybetmiyorsunuz. (San\u0131r\u0131m en faydal\u0131s\u0131 da bu&#8230;)<\/li>\n<\/ul>\n<h1>D\u00f6k\u00fcmantasyonda Kullan\u0131lacak Baz\u0131 Taglar;<\/h1>\n<p>Burada sadece taglar\u0131n isimlerini ve anlamlar\u0131n\u0131 payla\u015faca\u011f\u0131m. Nas\u0131l kullan\u0131ld\u0131klar\u0131 ile ilgili \u00f6rne\u011fi ise yaz\u0131n\u0131n en sonunda topluca verece\u011fim. Uzunca bir kod oldu\u011fu i\u00e7in \u00f6rnek bollu\u011fu a\u00e7\u0131s\u0131ndan doyurucu oldu\u011funu s\u00f6yleyebilirim.<\/p>\n<h1>summary<\/h1>\n<p>Hedef i\u015flevin veya s\u0131n\u0131f\u0131n \u00f6zetini i\u00e7ermelidir. Buraya yazaca\u011f\u0131n\u0131z ifade k\u0131sa ve \u00f6z olmal\u0131, herkesin anlayaca\u011f\u0131 basitlikte ve sade bir i\u00e7eri\u011fe sahip olmal\u0131d\u0131r.<\/p>\n<h1>remarks<\/h1>\n<p>Hedef i\u015flev\u00a0veya s\u0131n\u0131f\u00a0hakk\u0131nda geni\u015f\u00e7e bilgi verebilece\u011finiz, uzun uzad\u0131ya, detayl\u0131 a\u00e7\u0131klamalar\u0131n ve anlat\u0131mlar\u0131n yer ald\u0131\u011f\u0131 k\u0131s\u0131md\u0131r.<\/p>\n<h1>param<\/h1>\n<p>Belirli bir parametrenin ad\u0131 ve a\u00e7\u0131klamas\u0131n\u0131 i\u00e7eren b\u00f6l\u00fcmd\u00fcr.<\/p>\n<h1>returns<\/h1>\n<p>\u00c7\u0131kt\u0131 \u00fcreten bir yap\u0131 (mesela fonksiyon gibi bir \u015fey) ise d\u00f6n\u00fc\u015f de\u011feri ve a\u00e7\u0131klamas\u0131n\u0131 buradan yapabilirsiniz.<br \/>\nBuraya kadar tan\u0131t\u0131lan taglar Help Insight \u00e7er\u00e7evesinde fareyi ilgili kodun \u00fczerinde bekletti\u011finizde kar\u015f\u0131n\u0131za gelen bilgi baloncu\u011funda g\u00f6sterilir. A\u015fa\u011f\u0131daki di\u011fer taglar ise Model View arac\u0131l\u0131\u011f\u0131yla derledi\u011finiz d\u00f6k\u00fcmantasyon belgesinde kullan\u0131lmak \u00fczere tasarlanm\u0131\u015ft\u0131r. Yukar\u0131daki taglar g\u00fcnl\u00fck ihtiyac\u0131n\u0131z\u0131 kar\u015f\u0131larken a\u015fa\u011f\u0131daki taglar i\u015fi bir sonraki seviyeye ta\u015f\u0131yan yap\u0131y\u0131 ifade eder.<\/p>\n<h1>para<\/h1>\n<p>Bir paragraf\u0131 ifade eder. Di\u011fer taglar\u0131n i\u00e7inde paragraf a\u00e7mak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h1>c<\/h1>\n<p>Sabit karakter geni\u015fli\u011fine sahip yaz\u0131 tiplerini i\u00e7eren bir metin b\u00f6lgesini ifade eder. Bu metin b\u00f6lgesinde kullan\u0131lan font &#8220;<b>courier new<\/b>&#8220;, &#8220;<b>inconsolata<\/b>&#8220;, &#8220;<b>Fixedsys<\/b>&#8221; gibi sabit harf geni\u015fli\u011fine sahip bir yaz\u0131 tipidir&#8230;<\/p>\n<h1>code<\/h1>\n<p>\u00d6rneklemeler yapabilece\u011finiz bir b\u00f6l\u00fcmd\u00fcr. Burada verdi\u011finiz \u00f6rne\u011fin dilini &#8220;<b>lang<\/b>&#8221; attributesi ile\u00a0belirtebilirsiniz.<\/p>\n<h1>see<\/h1>\n<p>Belirli bir tip, sembol veya tan\u0131mlay\u0131c\u0131ya referans vermenizi, help d\u00f6k\u00fcman\u0131nda link tan\u0131mlaman\u0131z\u0131 sa\u011flar. d\u00f6k\u00fcman i\u00e7indeki bir elemana referans verirken &#8220;<b>cref<\/b>&#8220;, harici bir URL&#8217;ye link vermek i\u00e7in &#8220;<b>href<\/b>&#8221; attributesini kullanabilirsiniz.<\/p>\n<h1>exception<\/h1>\n<p>\u0130stisna ve\u00a0hata mesajlar\u0131 gibi konularda yapabilece\u011finiz\u00a0a\u00e7\u0131klamalar\u0131 i\u00e7erir. Hatan\u0131n t\u00fcr\u00fc ve a\u00e7\u0131klamas\u0131n\u0131 belirtmenizi sa\u011flar.<\/p>\n<h1>permission<\/h1>\n<p>Bir y\u00f6ntemin izinlerini anlatabilece\u011finiz b\u00f6l\u00fcmd\u00fcr.<\/p>\n<p>D\u00f6k\u00fcmantasyondaki taglar elbette sadece bunlardan ibaret de\u011fil, bunun yan\u0131nda daha bir \u00e7ok tag mevcut. Di\u011fer taglar ile ilgili daha ayr\u0131nt\u0131l\u0131 bilgi edinmek isteyenler i\u00e7in &#8220;XML Documentation for Delphi&#8221; aramas\u0131n\u0131 google&#8217;da yapabilirsiniz&#8230;<\/p>\n<h1>Programc\u0131 K\u0131lavuzu Nas\u0131l \u00dcretilir<\/h1>\n<p>Kapsaml\u0131 bir \u00f6rne\u011fe ge\u00e7meden \u00f6nce,\u00a0HTML D\u00f6k\u00fcman\u0131n\u0131 nas\u0131l \u00fcretece\u011finize k\u0131saca de\u011finelim. Bunun i\u00e7in projenize Model View deste\u011fini eklemelisiniz. \u00d6ncelikle men\u00fcden <strong>View<\/strong> \\ <strong>Model View<\/strong> penceresini a\u00e7man\u0131z gerekir. Bu pencere aktif hale geldi\u011finde, size bu proje i\u00e7in model deste\u011fini\u00a0eklemek isteyip istemedi\u011finizi soran bir mesaj g\u00f6sterecektir. Soruya <strong>&#8220;Yes&#8221;<\/strong> diyerek model deste\u011fini projenize ekleyebilirsiniz. Bundan sonras\u0131nda ise Model View penceresinde projenize sa\u011f t\u0131klay\u0131p <strong>&#8220;Generate Documentation&#8221;<\/strong> butonuna bas\u0131n. Kar\u015f\u0131n\u0131za, d\u00f6k\u00fcmantasyonu nereye kaydedece\u011finizi se\u00e7menizi sa\u011flayan bir ekran \u00e7\u0131kacakt\u0131r. \u0130\u015finize gelen ayarlamalar\u0131 yapt\u0131ktan sonra &#8220;OK&#8221; butonuna bast\u0131\u011f\u0131n\u0131zda varsay\u0131lan web browseriniz a\u00e7\u0131lacak ve HTML d\u00f6k\u00fcmantasyonunuz g\u00f6sterilecektir. A\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcleri bu s\u00fcreci anlaman\u0131z\u0131 kolayla\u015ft\u0131rabilir;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-356\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/2.png\" alt=\"\" width=\"407\" height=\"472\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/2.png 407w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/2-259x300.png 259w\" sizes=\"auto, (max-width: 407px) 100vw, 407px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-357\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/3.png\" alt=\"\" width=\"499\" height=\"267\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/3.png 499w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/3-300x161.png 300w\" sizes=\"auto, (max-width: 499px) 100vw, 499px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-358\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/4.png\" alt=\"\" width=\"398\" height=\"154\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/4.png 398w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/4-300x116.png 300w\" sizes=\"auto, (max-width: 398px) 100vw, 398px\" \/><\/p>\n<p>Bu ad\u0131mlar\u0131n sonucunda ise olu\u015fan HTML dok\u00fcman\u0131 a\u015fa\u011f\u0131daki gibi g\u00f6z\u00fckecektir;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-359\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/5.png\" alt=\"\" width=\"969\" height=\"1012\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/5.png 969w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/5-287x300.png 287w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/5-768x802.png 768w\" sizes=\"auto, (max-width: 969px) 100vw, 969px\" \/><\/p>\n<p>Pek sevimli bir g\u00f6r\u00fcn\u00fcm olmasa da ufak bir CSS ayarlamas\u0131yla y\u00fcz\u00fcne bak\u0131labilir bir dok\u00fcmantasyona sahip olabilirsiniz. Yetmediyse Document Insight ile olu\u015fturulmu\u015f \u00f6rnek bir k\u0131lavuz belgesi ise a\u015fa\u011f\u0131daki gibidir;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-360\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/6.png\" alt=\"\" width=\"1024\" height=\"730\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/6.png 1024w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/6-300x214.png 300w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/6-768x548.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<h1>\u00d6rnek<\/h1>\n<p>Genel ge\u00e7er taglar\u0131 tan\u0131d\u0131\u011f\u0131m\u0131za ve basit\u00e7e d\u00f6k\u00fcmantasyon dosyas\u0131n\u0131 nas\u0131l \u00fcretece\u011fimizi \u00f6\u011frendi\u011fimize g\u00f6re, art\u0131k kapsaml\u0131 bir \u00f6rnek ile konuyu ba\u011flayabiliriz.<\/p>\n<pre><code>unit Ana_;\r\n\r\ninterface\r\n\r\nuses\r\n \u00a0Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Generics.Collections, REST.Json;\r\n\r\nconst\r\n \u00a0\/\/\/ &lt;summary&gt;\r\n \u00a0\/\/\/ \u00a0 Pi say\u0131s\u0131n\u0131 temsil eder.\r\n \u00a0\/\/\/ &lt;\/summary&gt;\r\n \u00a0\/\/\/ &lt;value&gt;\r\n \u00a0\/\/\/ \u00a0 3.14159\r\n \u00a0\/\/\/ &lt;\/value&gt;\r\n \u00a0\/\/\/ &lt;remarks&gt;\r\n \u00a0\/\/\/ \u00a0 Pi say\u0131s\u0131, bir dairenin \u00e7evresinin \u00e7ap\u0131na b\u00f6l\u00fcm\u00fc ile elde edilen\r\n \u00a0\/\/\/ \u00a0 irrasyonel matematik sabiti'dir. \u0130smini, Yunanca s\u00f6zc\u00fc\u011f\u00fcn\u00fcn ilk harfi\r\n \u00a0\/\/\/ \u00a0 olan \"?\" den al\u0131r. Pi say\u0131s\u0131, Ar\u015fimet sabiti ve Ludolph say\u0131s\u0131 olarak\r\n \u00a0\/\/\/ \u00a0 da bilinir.\r\n \u00a0\/\/\/ \u00a0A\u015fa\u011f\u0131daki \u00f6rnek kod bir radyan\u0131n ka\u00e7 derece oldu\u011funu hesaplar.\r\n \u00a0\/\/\/  <span style=\"font-size: 10.7188px;\">x := 1 * (180 \/ Pi);<\/span>\r\n \u00a0\/\/\/ &lt;\/remarks&gt;\r\n \u00a0\/\/\/ &lt;seealso href=\"https:\/\/tr.khanacademy.org\/math\/algebra2\/trig-functions\/intro-to-radians-alg2\/v\/we-converting-radians-to-degrees\"&gt;\r\n \u00a0\/\/\/ \u00a0 Radyan\u0131 Dereceye D\u00f6n\u00fc\u015ft\u00fcrme\r\n \u00a0\/\/\/ &lt;\/seealso&gt; \u00a0Pi = 3.14159; type\r\n \u00a0\/\/\/ &lt;summary&gt;\r\n \u00a0\/\/\/ \u00a0 Bireylerin kimlik \u00f6zelliklerinin tan\u0131mland\u0131\u011f\u0131 yap\u0131.\r\n \u00a0\/\/\/ &lt;\/summary&gt;\r\n \u00a0\/\/\/ &lt;remarks&gt;\r\n \u00a0\/\/\/ \u00a0 Bireyleri kimlik a\u00e7\u0131s\u0131ndan tan\u0131mlayan \u00f6rnek bir Record tipidir. T\u00dcZEL\r\n \u00a0\/\/\/ \u00a0 Ki\u015filer yani \u015firketleri tan\u0131mlamak i\u00e7in l\u00fctfen TTuzel tipindeki yap\u0131y\u0131\r\n \u00a0\/\/\/ \u00a0 kullan\u0131n.\r\n \u00a0\/\/\/ &lt;\/remarks&gt;\r\n \u00a0\/\/\/ &lt;example&gt;\r\n \u00a0\/\/\/ \u00a0 <code lang=\"Delphi\"> \u00a0\/\/\/ var\r\n \u00a0\/\/\/ \u00a0 aKisi: TSahis;\r\n \u00a0\/\/\/ begin\r\n \u00a0\/\/\/ \u00a0 with aKisi do begin\r\n \u00a0\/\/\/ \u00a0 \u00a0 \u00a0 \u00a0Ad \u00a0 \u00a0:= 'mehmet akif';\r\n \u00a0\/\/\/ \u00a0 \u00a0 \u00a0 \u00a0Soyad := 'ersoy';\r\n \u00a0\/\/\/ \u00a0 \u00a0 \u00a0 \u00a0Yil \u00a0 := 1898;\r\n \u00a0\/\/\/ \u00a0 \u00a0 \u00a0 \u00a0ShowMessage(Kunye);\r\n \u00a0\/\/\/ \u00a0 end;\r\n \u00a0\/\/\/ end;\r\n \u00a0\/\/\/  <\/code> \u00a0\/\/\/ &lt;\/example&gt;\r\n\u00a0 TSahis = record\r\n\u00a0 \u00a0private \u00a0 \u00a0\r\n\/\/\/ &lt;seealso cref=\"Ad\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ad alan\u0131na bak\u0131n\u0131z. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0FAd \u00a0 \u00a0 : String; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Soyad\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Soyad alan\u0131na bak\u0131n\u0131z. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0FSoyad \u00a0: string; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Yil\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Yil alan\u0131na bak\u0131n\u0131z. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0FYil \u00a0 \u00a0: Integer; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Adlar\u0131n ilk harfini b\u00fcy\u00fck devam\u0131n\u0131 k\u00fc\u00e7\u00fck olacak \u015fekilde FAd \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 de\u011fi\u015fkenine aktar\u0131lmas\u0131n\u0131 sa\u011flar \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"Value\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ad listesini temsil eder. Ad listesi bo\u015fluk CHR(32) ile \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 b\u00f6l\u00fc\u015ft\u00fcr\u00fcl\u00fcr. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Ad\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ad alan\u0131n\u0131 inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0procedure SetAd(const Value: String); \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Soyad\u0131ndaki t\u00fcm harfleri b\u00fcy\u00fck harfe \u00e7evirir FSoyad de\u011fi\u015fkenine \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 aktar\u0131r. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"Value\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Soyad\u0131 listesini temsil eder. Soyadlar\u0131 bo\u015fluk CHR(32) ile \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 b\u00f6l\u00fc\u015ft\u00fcr\u00fcl\u00fcr. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt;\r\n\u00a0 \u00a0procedure SetSoyad(const Value: string); \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin do\u011fum y\u0131l\u0131n\u0131n kurallara uygun \u015fekilde belirtilmesini \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 sa\u011flar. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"Value\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Do\u011fum y\u0131l\u0131n\u0131 ifade eder. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Do\u011fum y\u0131l\u0131 ile ilgili mant\u0131ksal kurallar\u0131n i\u015fletilmesini sa\u011flar. \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Do\u011fum y\u0131l\u0131 bug\u00fcn\u00fcn tarihinden b\u00fcy\u00fck olamaz. Yani ki\u015fi gelecek y\u0131l \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 do\u011famaz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt;\r\n\u00a0 \u00a0 \u00a0procedure SetYil(const Value: Integer); \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 T\u00fcrk Harflerine g\u00f6re verilen metni k\u00fc\u00e7\u00fck ya da b\u00fcy\u00fck harfe \u00e7evirir. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"aString\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 D\u00f6n\u00fc\u015ft\u00fcr\u00fclecek olan metni ifade eder. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"aBuyukBasHarf\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 \u0130lk harfin b\u00fcy\u00fck olup olmad\u0131\u011f\u0131n\u0131 belirler. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;param name=\"aTumuBuyuk\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 T\u00fcm harflerin b\u00fcy\u00fck olup olmayaca\u011f\u0131n\u0131 belirler. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/param&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Performans\u0131 artt\u0131rmak i\u00e7in fonksiyon i\u00e7indeki alfabe harflerin \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 kullan\u0131m yo\u011funlu\u011funa g\u00f6re s\u0131ralanm\u0131\u015ft\u0131r. Buna g\u00f6re en \u00e7ok \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 kullan\u0131lan harfler alfabenin ba\u015f\u0131nda, en az kullan\u0131lanlar ise en \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 sonunda yer al\u0131r. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt;\r\n\u00a0 \u00a0 \u00a0function StringCaseTR(aString: String; aBuyukBasHarf: Boolean = True; aTumuBuyuk: Boolean = False): String;\r\n\u00a0 \u00a0public \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin ilk ad\u0131n\u0131 ve ikinci ad\u0131n\u0131 tutar \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 'U\u011fur G\u00f6ksel' \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ki\u015finin ad\u0131n\u0131 tutar, veri giri\u015fi s\u0131ras\u0131nda ad alan\u0131n\u0131n bi\u00e7imsel \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 olarak formatlanmas\u0131n\u0131 yani ilk harfin b\u00fcy\u00fck devam\u0131n\u0131n ise k\u00fc\u00e7\u00fck \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 olmas\u0131n\u0131 sa\u011flar. Her bo\u015fluktan sonraki ilk harfi b\u00fcy\u00fct\u00fcl\u00fcr... \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Isim\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Isim fonksiyonunu inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0property Ad \u00a0 : String \u00a0 \u00a0read FAd \u00a0 \u00a0 \u00a0Write SetAd \u00a0 ; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin soy ad\u0131n\u0131 ifade eder. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 'PARLAYAN' \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Evli han\u0131mlar i\u00e7in evlenmeden \u00f6nceki soyad\u0131 e\u015finin soyad\u0131ndan \u00f6nce \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 belirtilmelidir. Veri giri\u015fi s\u0131ras\u0131nda t\u00fcm soyad\u0131 de\u011feri b\u00fcy\u00fck \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 harfe d\u00f6n\u00fc\u015ft\u00fcr\u00fcl\u00fcr. Bu anlamda bo\u015fluk karakteri herhangi bir engel \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 te\u015fkil etmez. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Isim\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Isim fonksiyonunu inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0property Soyad: string \u00a0 \u00a0read FSoyad \u00a0 write SetSoyad; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin do\u011fdu\u011fu y\u0131l\u0131 g\u00f6sterir. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 1976 \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/value&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;exception cref=\"Exception\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Do\u011fum y\u0131l\u0131 bug\u00fcnden b\u00fcy\u00fck olamaz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/exception&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Yas\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Yas fonksiyonunu inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0property Yil \u00a0: Integer \u00a0 read FYil \u00a0 \u00a0 write SetYil \u00a0; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin \u015fu anki ya\u015f\u0131n\u0131 hesaplar. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 2018 y\u0131l\u0131nda oldu\u011fumuzu varsayarsak sonucu 42 olarak geri d\u00f6nd\u00fcr\u00fcr. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bilgisayar\u0131n g\u00f6sterdi\u011fi tarihin y\u0131l bilgisinden ki\u015finin \"Yil\" \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 alan\u0131nda belirtilen bilgiyi \u00e7\u0131kararak hesaplama yapar. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Yil\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Yil alan\u0131n\u0131 inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt; \u00a0 \u00a0 \u00a0function Yas \u00a0: Integer; overload; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ad ve Soyad bilgisini birlikte verir. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 'U\u011fur PARLAYAN' \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Formatlanm\u0131\u015f bir \u015fekilde bireyin ad ve soyad\u0131n\u0131 birlikte verir. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Ad\"&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Ad alan\u0131n\u0131 inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;seealso cref=\"Soyad\"&gt; \u00a0 \r\n\u00a0\/\/\/ \u00a0 Soyad alan\u0131n\u0131 inceleyiniz. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/seealso&gt;\r\n\u00a0 \u00a0 \u00a0function Isim : String; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;summary&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin isim ve ya\u015f bilgisini birlikte verir. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/summary&gt; \u00a0 \r\n\u00a0\/\/\/ &lt;returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 'U\u011fur PARLAYAN 42 ya\u015f\u0131ndad\u0131r' \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/returns&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;remarks&gt; \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 Bireyin ad\u0131, soyad\u0131 ve do\u011fum y\u0131l\u0131 bilgisini kullanarak formatl\u0131 bir \u00a0 \u00a0\r\n\u00a0\/\/\/ \u00a0 \u015fekilde (Returns k\u0131sm\u0131ndaki) gibi g\u00f6sterilmesini sa\u011flar. \u00a0 \u00a0\r\n\u00a0\/\/\/ &lt;\/remarks&gt;\r\n\u00a0 \u00a0 \u00a0function Kunye: String;\r\n\u00a0end;\r\n\u00a0TAna = class(TForm)\r\n\u00a0 \u00a0BT_TEST: TButton;\r\n\u00a0 \u00a0procedure BT_TESTClick(Sender: TObject);\r\n\u00a0private\r\n\u00a0 \u00a0{ Private declarations }\r\n\u00a0public\r\n\u00a0 \u00a0{ Public declarations }\r\n\u00a0end;\r\nvar \u00a0Ana: TAna;\r\nimplementation\r\n{$R *.dfm}\r\nuses \u00a0System.DateUtils;\r\n{ TSahis }\r\nfunction TSahis.Isim: String;\r\nbegin\r\n\u00a0Result := String(FAd + ' ' + FSoyad).Trim;\r\nend;\r\nfunction TSahis.Kunye: String;\r\nbegin\r\n\u00a0Result := Format('%s %d ya\u015f\u0131ndad\u0131r.', [Isim, Yas]);\r\nend;\r\nfunction TSahis.StringCaseTR(aString: String; aBuyukBasHarf: Boolean; aTumuBuyuk: Boolean): String;\r\nconst\r\n\u00a0K = 'aeirl\u0131dknmyustbo\u00fc\u015fzgh\u00e7\u011fcvp\u00f6fjwx';\r\n\u00a0 \/\/ Harfleri b\u00f6yle s\u0131ralanmas\u0131n\u0131n sebebi\r\n\u00a0B = 'AE\u0130RLIDKNMYUSTBO\u00dc\u015eZGH\u00c7\u011eCVP\u00d6FJWX';\r\n\u00a0 \/\/ Bunlar\u0131n T\u00fcrk\u00e7edeki kullan\u0131m s\u0131kl\u0131klar\u0131na g\u00f6redir.\r\nvar\r\n\u00a0I: Integer; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ Saya\u00e7, indis de\u011fi\u015fkeni\r\n\u00a0X: Integer; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ Bulunan harfin alfabedeki indis numaras\u0131\r\nbegin\r\n\u00a0Result := aString;\r\n\u00a0if (aTumuBuyuk = False) then begin\r\n\u00a0 \u00a0 \u00a0for I := 1 to Result.Length do begin\r\n\u00a0 \u00a0 \/\/ metni harf harf geziyoruz. (Bir rakam ile de kar\u015f\u0131la\u015fabiliriz...)\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0X := pos(Result[I], B); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ POS, b\u00fcy\u00fck \/ k\u00fc\u00e7\u00fck harfe duyarl\u0131d\u0131r (Case Sensitive). Yani b\u00fcy\u00fckse k\u00fc\u00e7\u00fc\u011f\u00fc, k\u00fc\u00e7\u00fckse b\u00fcy\u00fc\u011f\u00fc bulmaz.\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0if (X &gt; 0) then Result[I] := K[X]; \u00a0 \/\/ Bulunan karakter alfabemizde varsa k\u00fc\u00e7\u00fc\u011f\u00fcyle yer de\u011fi\u015ftiriyoruz.\r\n\u00a0 \u00a0 \u00a0end;\r\n\u00a0 \u00a0 \u00a0if (aBuyukBasHarf = True) then\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0for I := 1 to Result.Length do begin \/\/ Metni harf harf geziyoruz\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0X := pos(Result[I], K);\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0if (X &gt; 0) then begin\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Result[I] := B[X];\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0Exit; \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ \u0130lk harfi b\u00fcy\u00fctt\u00fckten sonra \u00e7\u0131k\u0131yoruz...\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0end;\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0end;\r\n\u00a0end else begin\r\n\u00a0 \u00a0 \u00a0for I := 1 to Result.Length do begin \u00a0 \u00a0 \/\/ metni harf harf geziyoruz. (Bir rakam ile de kar\u015f\u0131la\u015fabiliriz...)\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0X := pos(Result[I], K); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/ POS, b\u00fcy\u00fck \/ k\u00fc\u00e7\u00fck harfe duyarl\u0131d\u0131r (Case Sensitive). Yani b\u00fcy\u00fckse k\u00fc\u00e7\u00fc\u011f\u00fc, k\u00fc\u00e7\u00fckse b\u00fcy\u00fc\u011f\u00fc bulmaz.\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0if (X &gt; 0) then Result[I] := B[X]; \u00a0 \/\/ Bulunan karakter alfabemizde varsa k\u00fc\u00e7\u00fc\u011f\u00fcyle yer de\u011fi\u015ftiriyoruz.\r\n\u00a0 \u00a0 \u00a0end;\r\n\u00a0end;\r\nend;\r\nprocedure TSahis.SetAd(const Value: String);\r\nvar\r\n\u00a0Tmp: TStringList;\r\n\u00a0I: Integer;\r\n\u00a0S: string;\r\nbegin\r\n\u00a0Tmp := TStringList.Create;\r\n\u00a0Tmp.Delimiter := #32;\r\n\u00a0Tmp.DelimitedText := Value;\r\n\u00a0 \u00a0 \u00a0for I := 0 to Tmp.Count - 1 do begin\r\n\u00a0 \u00a0 \u00a0S := LowerCase(Tmp.Strings[I]).Trim;\r\n\u00a0 \u00a0 \u00a0if S.IsEmpty = False then S[1] := stringCaseTR( Copy(S, 1, 1), TRUE) [1];\r\n\u00a0 \u00a0 \u00a0Tmp.Strings[I] := S;\r\n\u00a0end;\r\n\u00a0FAd := Tmp.DelimitedText;\r\n\u00a0FreeAndNil(Tmp);\r\nend;\r\nprocedure TSahis.SetYil(const Value: Integer);\r\nbegin\r\n\u00a0if (Value &lt;= YearOf(Now))\r\n\u00a0then FYil := Value\r\n\u00a0else raise Exception.Create('Do\u011fum y\u0131l\u0131 bug\u00fcnden b\u00fcy\u00fck olamaz.');\r\nend;\r\nfunction TSahis.Yas: Integer;\r\nbegin\r\n\u00a0Result := YearOf(Now) - FYil;\r\nend;\r\nprocedure TSahis.SetSoyad(const Value: string);\r\nbegin\r\n\u00a0FSoyad := StringCaseTR(Value.Trim, True, True);\r\nend;\r\n{ TAna }\r\nprocedure TAna.BT_TESTClick(Sender: TObject);\r\nvar\r\n\u00a0 aKisi: TSahis;\r\nbegin\r\n\u00a0with aKisi do begin\r\n\u00a0 \u00a0 \u00a0 Ad \u00a0 \u00a0:= 'mehmet akif';\r\n\u00a0 \u00a0 \u00a0 Soyad := 'ersoy';\r\n\u00a0 \u00a0 \u00a0 Yil \u00a0 := 1898;\r\n\u00a0 \u00a0 \u00a0 ShowMessage(Kunye);\r\n\u00a0end;\r\n\u00a0ShowMessage( Pi.ToString );\r\nend;\r\nend.<\/code><\/pre>\n<h1>Sade bir G\u00f6r\u00fcn\u00fcm i\u00e7in\u00a0Code Folding<\/h1>\n<p>Yukar\u0131daki \u00f6rnek kod, dok\u00fcmantasyon ile birlikte \u00e7ok karma\u015f\u0131k, i\u00e7 i\u00e7e ge\u00e7mi\u015f gibi bir izlenim verebilir, al\u0131\u015fk\u0131n olmayan g\u00f6zler i\u00e7in fazla kalabal\u0131k g\u00f6z\u00fckebilir. Bu sorunu a\u015fmak i\u00e7in ise IDE&#8217;nin Code Folding \u00f6zelli\u011finden faydalanabilirsiniz. B\u00f6yle bir durumda, yani daha sade bir g\u00f6r\u00fcn\u00fcm i\u00e7in a\u015fa\u011f\u0131daki ekran g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc inceleyebilirsiniz;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-361\" src=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/7.png\" alt=\"\" width=\"837\" height=\"745\" srcset=\"http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/7.png 837w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/7-300x267.png 300w, http:\/\/www.potansif.com\/wp-content\/uploads\/2019\/09\/7-768x684.png 768w\" sizes=\"auto, (max-width: 837px) 100vw, 837px\" \/><\/p>\n<p>Faydal\u0131 olmas\u0131 dile\u011fiyle,<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Elbette bir \u00e7ok yol ile yap\u0131labilir. Document Insight gibi \u00fccretli veya HelpNDoc gibi ki\u015fisel kullan\u0131m i\u00e7in \u00fccretsiz olan baz\u0131\u00a0ara\u00e7lar da kullanabilirsiniz fakat yeteri kadar \u00f6zen g\u00f6stermekten uzaksan\u0131z, bunun i\u00e7in sadece Notepad bile i\u015finizi g\u00f6recektir. Benim hedef kitlem malesef bu y\u00f6ntemi tercih edenler olamayacak \ud83d\ude42<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[4,5,6],"class_list":["post-142","post","type-post","status-publish","format-standard","hentry","category-blog","tag-delphi","tag-dokumantasyon","tag-xml"],"_links":{"self":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=142"}],"version-history":[{"count":5,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions"}],"predecessor-version":[{"id":363,"href":"http:\/\/www.potansif.com\/index.php?rest_route=\/wp\/v2\/posts\/142\/revisions\/363"}],"wp:attachment":[{"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.potansif.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}