Delphi'ye Giriş Mza WebKURS 2000-Delphi |
|
Delphi Inprise’ın derleyici teknolojisinde gelmiş olduğu aşamanın en büyük ürünlerinden biridir. Inprise bu teknolojiyi Delphi’den sonra geliştirdiği diğer programlama dillere aktarmaya çalışmış ve Delphi’nin görsel uygulama ve geliştirme ortamına benzer ortamları, ürünlerinde aynı tutmaya çalışmıştır. Ayrıva yine Delphi’yle Component (Bileşen) temelli uygulama geliştirme ortamı teknolojisini oldukça verimli bir biçimde ortaya koymuş ve yine bu teknolojiyi diğer uygulama geliştirme araçlarına aktarmayı hedefleri arasına koymuştur. (Örneğin, yine Inprise’ın ürünü olan Java Builder uygulama geliştirme ortamında da Java için bileşen teknolojisi kullanabilmektedir). Delphi’nin en güçlü yanlarından biri de Windows API fonksiyonlarının tümüne rahatlıkla ulaşabiliyor olmasıdır. Windows altında C++ ile uygulama geliştirmiş olan programcılar, Windows API fonksiyonlarını yakından tanıyacaklardır. Delphi’yle Windows API fonksiyonları rahatlıkla çağrılabilmekte ve bu sayede çok güçlü, hızlı programlar üretebilmektedir. Sonuç olarak görsel uygulama ortamı Delphi’nin gücü:
|
Delphi Yapısı Mza WebKURS 2000-Delphi |
|
Delphi genellikle şu bölümlerden meydana gelir:
Çok sık kullanılan düğmeler speedBar’a eklenebilir. Faremizi Ayıraç çizgisinin bulunduğu bölüme getirelim ve ters tıklayalım, SpeedBar’a ters tıkladığımız zaman bir menü gelecektir. Bu menüden Customize seçeneğini seçelim, Sonra Commands sayfasına girelim. Burada sol taraf da ki listeden istediğimiz sık kullanılacak düğmelerin listesini seçebiliriz. Şimdi bu menü elemanlarından Build All düğmesini sürükle ve bırak özelliğini kullanarak paletimize çekelim. Yani üzerinde bir kez tıkladıktan sonra elimiz farenin sol düğmesinde basılı durumdayken bu düğmeyi çekelim ve speedbar üzerinde boş bir yere getirerek bırakalım. Artık burada build All düğmesini görebiliriz. SpeedBar üzerindeki düğmelerin ne işe yaradıklarını her zaman bilemeyebiliriz. Bilemediğimiz zaman ise o düğme üzerine geldiğimiz zaman kısa süre bekleme esnasında düğme altına bir yazı gelecektir ve burada düğmenin tanımı açıklanır. Buradan o düğmenin ne işe yardığı kolayca öğrenilebilir. Object Inspector (Nesne Denetleyici) Object Inspector IDE’nin sol tarafında görünen dikey penceredir. Bu pencerede iki sayfa bulunmaktadır. Properties ve Events. Bu sayfaların başlıkların üzerinde fareyle tıkladığımız zaman ilgili sayfaya geçebiliriz. Bu sayfalar bileşenlere ait özellikleri yada o bileşen için gerçekleşebilecek olayların listesini göstermektedir. Programı açtığımız zaman karşımıza çıkan formumuzun rengini, boyutunu, enini ve bir takım özellikler nesne denetleyici tarafından düzenlenmektedir. Form üzerine koyduğumuz nesnelerin üzerine tıklatıldığı zaman object inspector penceresinde o nesneye ait özellikler görüntülenir. Göze hoş görünmesi için nesnelerin rengi, 3 boyut özelliği, yazı fontu vb. özelliklerinin ayarlanmasını kolaylaştırmak için object inspector kullanılır. Object Inspector üzerindeki diğer sayfaya (Events) geçtiğimiz zaman properties sayfasına benzer sayaf ortaya çıkacaktır. Burada ise çalıştığımız pencereye veya nesneye ait olaylar (Events) listelenmiştir. Object Inspector’un en üst kısmında bir bileşen listesi vardır. Formumuz üzerine yerleşen her bileşen bu listede yer almaktadır. Şimdi Windows’u düşünelim. Windows’ta bir pencereyi bir yerden bir yere çektiğimizde aslında bir çok olay (Events) meydana gelmektedir. Faremizin, taşımak istediğimiz pencerenin üzerinde olduğunu var sayalım.
Formlar uygulama geliştirirken üzerine Delphi bileşenleri koyabileceğimiz pencerelerdir. Genel olarak her Delphi programı en az bir formdan oluşmuştur. Formlar görsel programlamanın gerçekleştiği yerlerdir. Bileşen paletinde bulunan bileşenleri sürükle bırak özelliği sayesinde fareyle tutularak istenilen yere yerleştirilebilirler. Bir bileşen form üzerine yerleştirildikten sonra, üzerine yine fare getirilerek sürükle bırak özelliği ile form üzerinde bir başka yere de çekilebilir. Formlar daha önce Delphi’yle bir yandan görsel olarak uygulama geliştirme yaparken bir yandan da programlarımız için kaynak kod yazacağız. Bu kaynak kodları yazdığımız programlama dilinin adı OBJECT PASCAL’ DIR. Object Pascal kaynak kodunu bir editör kullanarak yazabiliriz. İşte bu editörde Delphi’yle birlikte gelen IDE içinde bulunmaktadır. Yeni bir form yarattığımızda bu form ile ilgili kaynak kodlarının bulunduğu ve yeni altyordamların yazılabileceği bir modül (Ünit) oluşur. Unit, Object Pascal programlama dilinde birbirleriyle ilgili procedure ve fonksiyonların toplandığı modüllerin her biridir. Pascal’da yaratılan bir modülün uzantısı *.PAS’dır Ekranımızda kod editör penceresine ulaşabilmek için, ekranın ortasında görünen form1 formunun arkasında duran pencereyi aktif hale getirmemiz gerekir. Ancak bu pencere Form 1’in arkasında kaldığı için ilk bakışta görmeyebiliriz. Bu nedenle fareyle form1’i başlık kısmından tutarak yana çekelim; artık arkadaki penceremizi de görebiliriz. Bu durumdayken tekrar formumuza geri dönmek için yapmamız gereken form üzerinde bir kez fareyle tıklamak olacaktır(Şekil 2.4). Delphi programından çıkmak için her programda olduğu gibi File menüsünden Exit seçilerek çıkmak mümkündür veya Alt+F4 tuşları kullanılarak da çıkılabilir. Delphi’yle uygulama geliştirme işlemi Proje kavramı üzerine kurulmuştur. Genel olarak uygulamalarımızda birden fazla modülle uğraşırız. Bu modüller asında an menülerin oluşturulduğu modüller, raporlama modülleri, kullanıcı arabiriminin hazırladığı formlarla ilgili modüller yada programınızın çeşitli yerlerinden çağrılabilecek fonksiyon ve procedure’lerin yazıldığı dosyalar vardır. İşte bir Delphi uygulamasını oluşturan bu modüllerin tümüne birden Proje adı verilir. Bu dosyaların bazıları uygulamayı geliştirme aşamasında bizim tarafımızdan, bazılarıda derleme sırasında derleyici tarafından oluşturulur. Yeni Bir Proje Yaratmak Şimdi Delphi’de ilk projemizi oluşturalım. Oluşturacağımız bu ilk proje şimdilik hiç bir şey yapmayacak ve ekranda sadece boş bir form görünecek. Bunun için önce ana menüden File+New Application seçeneğine girelim. Karşımıza tamamen boş bir formun olduğu bir ekran gelecektir. (Tabiki Object Inspector ve kod editör pencereleri yine mevcut). Aslında tam şu anda ilk projemizi yaratmış oluyoruz. Yapmamız gereken, bu projeyi istediğimiz bir adla saklamak ve daha sonra onu çalıştırmaktır. Projemizi saklamak için, ana menü File+SaveAll seçeneğine gelmeliyiz. Bu noktada karşımıza önce üzerinde çalıştığımız modülü (Unit) hangi adla saklayacağımızı soran bir pencere çıkacaktır. Bu modül üzerinde çalışma yaptığımız formumuza ait bir modüldür. Bu modüle ilk modül adını vererek Enter Tuşuna basalım. Modülümüz ilk modül *.PAS adıyla saklanmış olacaktır. Fakat hemen sonra karşımıza bir pencere daha çıkacak ve bu kez üzerinde çalıştığımız projenin adının girilmesi beklenecektir. Projemizin adını da buraya ilk proje olarak girelim. Bu kez projemiz ilk proje *.DPR(DPR=Delphi project) şeklinde saklanmış olacaktır. Bunu görmek için bu pencereyi istediğimiz bir yere taşıyalım ve boyutları üzerinde oynayalım. Son olarak ise kontrol menüsü üzerinde(Pencerenin en sol üst kısmında) çift tıklayarak formu kapatalım. Şimdi tekrar IDE ortamına dönmüş olacağız. Uygulamamızı çalıştırdığımızda eğer dikkat ettiyseniz formumuzun başlığında form1 yazısı bulunmaktadır. Şimdi bir adım daha ileri giderek bu başlığı değiştireceğiz. IDE içindeyken formumuz üzerindeki boş bir alana bir kez tıklayalım. Bu durumda formumuzu aktif duruma getirmiş oluruz ve Object Inspector’de formumuzla ilgili özellikleri görebiliriz. Bu başlığı değiştirmek için Caption özelliğinin karşısındaki alana faremizle tıklayarak “ilk penceremiz” yazısını yazalım(Şekil 2.5). Artık formumuzun başlığında “İlk Penceremiz” yazısı görünecektir. Bu başlık programımızın çalışma esnasında görüneceği gibi uygulamayı geliştirdiğimiz ortamda da karşımıza çıkacaktır.
Windows altında görsel olarak uygulama geliştirme aşamasında karşılaşılacak en önemli sorunlardan bir tanesi, uygulamamızdaki formların ve modüllerin sayısının çok artması ve birinden diğerine geçişler sırasında çok zorlanmasıdır. Delphi’de bu sorunu çözebilmek için Wiew+Proje Manager seçeneğine girebiliriz. Bu seçeneğe girdiğimizde projeyle ilgili tüm formlarımızın ve modüllerimizin bir listesini bulabiliriz. Proje Manager’i kullanarak projemize yeni bir modül ekleyebilir ve silebilir, istediğimiz form yada modül adı üzerine çift tıklayarak direkt olarak o form yada modülle ilgili bölüme giderek çalışabiliriz. Genel olarak Delphi’yle bir proje geliştirdiğimizde, dizinimizde farklı uzantılarda dosyalar görürüz. Bu uzantılar ve anlamaları aşağıdaki gibi özetlenebilir.
Formlar, görsel uygulama geliştirmenin temel yapı taşalarındandır. Görsel programlamada, birtakım nesneler formlar üzerine yerleştirilir. Yerleştirilen bu nesneler ve farenin birbiri ile etkileşimi ile ortaya bir sonucun çıkması istenir. Bu sonuç nesnelere birtakım kodların eklenmesiyle oluşturulur. Bu durumda formlar, içlerinde bir çok nesneyi barındıran paketler şekline dönüşmektedir. Böyle bir senaryoda kod yazma işlemi, form üzerine bir nesnenin konulmasıyla başlamakta ve yazılan kodların o nesnelere ilişkilendirilmesiyle gelişmektedir. Böylece, uygulama geliştirme çok basit ve hızlı bir hale gelebilmektedir. Bileşenler (Component), Delphi’nin formlar üzerine yerleştirebildiği nesnelerin her biridir. Bileşenler Bileşen sayfalarından seçilir ve form üzerine yerleştirilir. Daha sonra istenirse özellikleriyle oynanabilir ve bu bileşenler bir takım kodlarla ilişkilendirilebilir. Projemizin IDE ortamında görüntüsüne dikkat ettiğimizde formumuza ait bir çok özelliği Object Inspector’da görebiliriz. Bu özelliklere daha sonra birçok yerde değineceğiz. Formumuz üzerine yeni bir bileşen yerleştirmek için önce bileşen paletindeki (Bileşen sayfalarının bulunduğu bölüm) bileşenlerden bir tanesi üzerinde sonrada formumuz üzerinde herhangi bir yerde faremizi tıklamalıyız. Böylece o noktaya, seçtiğimiz bileşen yerleştirilecektir. Bileşen paletinde çok sayıda bileşen vardır. Bu bileşenler Bileşen Paleti üzerinde birçok sayfaya yerleştirilmiştir. Bileşen paletinin üst kısmında yazılı olan bu sayfa isimleri üzerinde fareyle tıklattığımızda ilgili sayfaya geçebiliriz. Bu sayfalar Standart, Additional, Win32, Sistem, İnternet, Data Acces, Data Controls, MIDAS, Decision Cube, Qreport, Dialogs, Win 3.1, Samples ve Active X sayfalarıdır. İstenirse bu sayfaların ve sayfalardaki bileşenlerin yerleri değiştirilebilir. Yeni bileşenler eklenebilir yada var olan bir bileşen, Bileşen Paletinden çıkarılabilir. Bileşen Paleti üzerindeki bileşenlerin ne olduğu hakkında bilgi sahibi olabilmemiz için, ilgilendiğimiz bileşenin üzerine faremizi götürerek birkaç saniye faremizi hareket ettirmeden beklersek o bileşenin adıyla ilgili küçük bir açıklama görebiliriz. Şimdi bileşen sayfaları hakkında kısa açıklamalar yapalım. Standart: Bu sayfada Windows tabanlı bileşenler arasında en fazla kullanılanların bir listesini görebiliriz. Bu bileşenler birçok Windows uygulamasında görebileceğimiz standart bileşenleri kapsamaktadır. Additional: Bu sayfada karşılaşacağımız bileşenler, Windows tabanlı her uygulamada göremeyeceğimiz bileşenlerdir. Bunlardan bazıları oldukça kullanışlıdır. Bunlar Tshape, Timage gibi grafik tabanlı bileşenlerde vardır. Win32: Bu sayfada 32-Bit Windows’la birlikte gelen bazı bileşenleri kullanabilmek için Delphi tarafından hazırlanan sarmalayıcı bileşenlerde vardır. Data Acces: Bu sayfalardaki bileşenler yardımıyla sorgulama, veri tabanı ve tablo bağlantıları yapılabilir. Data Controls: Bu sayfadaki bileşenler sayesinde tablolarımızdaki kayıtlara ait bilgileri ekran üzerindeki bileşenlerle ilişkilendirilmiş oluruz. MIDAS: Bu sayfadaki bileşenlerle, DCOM ya da CORBA standardına uygun programlar yazmamız mümkün olmaktadır. Win 3.1: Bu sayfada Windows 3.1’de kullanacağımız bileşenler yer almaktadır. Buradaki bileşenlere benzer bileşenleri Win 32 sayfasında kullanabiliriz. Dialogs: Bu sayfada Dosya Aç, Yazıcı Ayarları, Dosyayı Sakla gibi windows uygulamalarında sıkça karşılaşılan bileşenler bulabiliriz. System: Bu sayfada windows sisteminin bazı özellikleriyle ilgili bileşenlere sahiptir.(DDE ve OLE’ye ait bileşenler gibi) Qreport: Bu sayfa üzerindeki bileşenler sayesinde görsel olarak raporlar yaratabilir ve baskı önizleme özelliğini, programın çalışma aşaması dışında, geliştirme aşamasında da kullanabiliriz. Active X: Bu sayfada başka programlama dilleriyle oluşturulan Active X bileşenlerine ait örnekler vardır. Decision Cube: Bu sayfada OLAP fonksiyonlarıyla ilgili bileşenler vardır. Samples: Bu sayfada, Delphi içinde yazılan örnek bileşenler vardır. Delphide bloklar iki parçadan meydana
gelmektedir. Bunlardan birincisi Değişken, sabit, tip vb. tanımlama bloğu, diğeri ise
program komutlarının doğrudan tanımlandığı bölümdür.
Bir unit tanımlama ve deyim
bölümlerinden meydana gelir. Unit unit1; Yeni bir form oluşturulduğu zaman
delphi o forma ait unit içerisine boş olan public ve private alanları koyar. |
Değişkenler Mza WebKURS 2000-Delphi |
||||||||||||||||||||||||||||||||||||||||||||||||
Değişkenler tanımlanırken şu şartlar göz önüne alınmalıdır.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Delphi’da program içerisinde kullanılan bütün değişkenler tipleri ile beraber tanımlanmalıdırlar. Değişken, sabit ve tip tanımlamaları için Var, Const ve Type tanımlama blokları kullanılır. Kullanılan Tipler: |
||||||||||||||||||||||||||||||||||||||||||||||||
Tamsayı, değişken ve sabitleri tanımlamak için kullanılan tiplerdir. Bu değişken ve sabitlere ondalıklı değer aktarılamaz. Tamsayı Tipler:
|
||||||||||||||||||||||||||||||||||||||||||||||||
Ondalık değişken ve sabitleri tanımlamak için kullanılır. Gerçek sayı tipleri aşağıda verilmiştir.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Boolean True ve False değerlerinden birini içerir. Hafızada 1 byte yer kaplar. Bir ifadenin doğru yanlış olduğunu veya evet hayır değerlerinden birini aldığı durumlarda kullanılır. |
||||||||||||||||||||||||||||||||||||||||||||||||
Char Bir karakter içerebilen 1 byte'lık veri tipidir. Bu tip değişkenler sadece bir karakter barındırabilirler. AnsiChar Char tipi ile aynıdır. WideChar Bu tip 2 byte'lık bir karakter tipidir ve uzak doğu dillerinde kullanılır. |
||||||||||||||||||||||||||||||||||||||||||||||||
ShortString 255 karaktere kadar karakter ataması yapabilen veri tipidir. Bellekte karakter sayısı +1 byte yer kaplar. 0..255 den fazla atama yapılamaz. yapılan atamaların 255'den sonrasının kesilmesine neden olabilir. Ansistring Bu tip stringler dinamiktir. Belli bir sınırı yoktur. String Ansistring tipi ile aynıdır. Pchar 64 kbyte'a kadar atama yapılabilen sonu #0 karakteri ile biten string veri tipidir. |
||||||||||||||||||||||||||||||||||||||||||||||||
Dizi tanımı var bloğunda aşağıdaki gibi tanımlanır.
Örneğin 100 elemanlı bir sizi şöyle tanımlanabilir.
Dizi elemanlarına [ ] parantezi ile ulaşılabilir. Sayilar[1]:=1; Dizilerin alt ve üst sınırlarını Low ve High fonksiyonları ile öğrenebiliriz. Diziler tek boyutlu olduğu gibi çok boyutlu da olabilirler. N boyutlu bir dizi şöyle tanımlanabilir.
Boyutunun derleme sırasında belirlenmesi gerekmeyen dizilere dinamik dizi denir ve program çalışırken dizinin boyutu belirlenir.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Pointerler gerçekte bir değeri değil bir değerin bulunduğu adresi gösterirler. Eğer pointer'in nasıl bir bilgiyi göstereceği belli ise aşağıdaki pointer tiplerinden birini kullanabiliriz. PAnsiString AnsiString tipinde bir değişkeni gösterecek pointer. PByteArray TbyteArray tipinde bir değişkeni gösterecek pointer. Çoğunlıkla bellekte ayrılmış bölgelerdeki her byte ulaşabilmek için kullanılır. PCurrency Currency tipinde bir değişkeni gösterecek pointer. PExtended Extended tipinde bir değişkeni gösterecek pointer. PShortString ShortString tipinde bir değişkeni gösterecek pointer. PWordArray TWordArray tipinde bir değişkeni gösterecek pointer. Çoğunlukla bellekte ayrılmış bölgelerdeki her worde (2 Byte) ulaşabilmek için kullanılır. Bunların haricinde herhangi bir tip veya değişken için ^ karakteri kullanılarak kolayca pointer tanımlanabilir.
Pointerin Barındırılacağı Adres Pointer tipler gerçekte bir değeri değil adresi barındırırlar. Bu yüzden hangi adresi barındırdıkları belirlenmelidir. Bu adres belirleme işlemi @ karakteri ile yapılır.
Bir pointerin aldığı adreste bulunan değeri ise ^ karakteri kullanarak öğrenebiliriz.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Bu tip değişkenin alabileceği değerlerin belli olduğu durumlarda okuma kolaylığı sağlanması için kullanılır. Bu tip type bölümünde tanımlanır.
Bu tip program içerisinde şu şekilde kullanılır.
Bu tiplere atama iki şekilde yapılır. bolum:=succ(bolum); bolum:=bolumler(integer(bolum)+1); |
||||||||||||||||||||||||||||||||||||||||||||||||
Bir alt sınırlı tip tanımlamak için tanımlanacak aralığın min ve max değerine ihtiyaç duyulur. tanımlama işlemi yine type kısmında yapılır.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Matematikte bildiğimiz kümelerin karşılığı olan tiptir. bu tipte tanımlanan değişkenler üzerinde küme işlemleri yapılabilir. type kısmında tanımlanabilir.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Alt alan olarak adlandırılan 1’den fazla ifadenin oluşturduğu yapıdır. Bu tip ile farklı tipte birden fazla alan bir isim altında tanımlanabilir. Record içerisinde tanımlanan her alanın bir ismi vardır ve bu isimler birbirinden farklı olmak zorundadır. Ancak, bu isimler ile aynı olan başka tanımlamalar bu tip dışında kullanılabilir. Record tipinde olan veriler type bölümünde RECORD-END bloğu içerisinde tanımlanabilirler.
Yazılımdan da görüldüğü gibi her RECORD bloğu içerisinde birden fazla alan tanımlanabilir. Her record tip tanımı end deyimi ile son bulur. Record içerisindeki alan isimlerinin aynı tipte olmaları durumunda aralarına virgül (,) koymak şartıyla arka arkaya yazılabilirler.
Verilen tip ismi (Musteri) özel bir tip olarak kabul edilir. Bu tip adı, real, integer gibi bir tip durumunda ve değişkenleri tanımlamada kullanılır. Tanımlamada kullanılan değişken record tipi içerisinde belirtilen bütün alt alanları temsil eder. Yukarıda tanımlanan musteri tipinde bir değişken tanımlamak için var değişken tanımlama bloğu kullanılır. Bu tanımlama ile musteri kayıt yapısı içerisinde yer alan alanların, icra bölümünde işleme alınması sağlanır. Bunun için mus değişken isminden yararlanılır. Mus değişkenine bağlı alt alanları kullanmak için; bu değişken ismi ile alt alan ismi arasına nokta(.) konur. Mesela Ad ve Soyad alanlarına bilgi atmak için;
şeklinde tanımlamalar yapılır. Record tipindeki veriler daha çok rasgele erişimli dosyalarda kullanılır. Dosyalara bilgi girişi ve dosyadan bilgi okuma işlemlerinde kayıt yapısını oluşturan her alanın tektek yazılması yerine, bütün alanları kapsayan bir değişken isminin yazılması yeterli olacak ve kullanımda büyük bir kolaylık sağlayacaktır. Record’u oluşturan alanlar herhangi bir tipte olabilir. Bir record tanımı içerisinde daha önce tanımlanmış olan başka bir record ismi, alt alana ait bir tip ismi olabilir. |
||||||||||||||||||||||||||||||||||||||||||||||||
Buradaki öncelik sırası çarpma işlemindedir. İkinci öncelik ise çıkartma işlemindedir. |
||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||
Sabitler değişmeyen değerler içerirler. Bu değerler programın başından sonuna kadar geçerlidir. Sabit tanımlama işelmi Const bloğonda yer alır.
|
||||||||||||||||||||||||||||||||||||||||||||||||
Değişkenlere ilk değerin atanması ve bu değişkenin değerinin prosedürün çalışması bittikten sonra da koruması için yine const kısmına değişken tanımı yapılır.
|
||||||||||||||||||||||||||||||||||||||||||||||||
|
Karşılaştırma ve Döngü Deyimleri Mza WebKURS 2000-Delphi |
|
Şartlı Çalıştırma Deyimleri Programlar normalde satır satır çalışırlar. İstenirse belirli şartlar aranarak programın bir kısmının çalıştırılmasını veya çalıştırılmamasını sağlayabiliriz. IF Yapısı If şart yapısı bütün programlama dillerinde olan; bazı şartlar gerçekleşmesi durumunda ve gerçekleşmemesi durumunda ayrı-ayrı kodların çalıştırılmasına imkan veren yapıdır. Yapısı:
Şartın gerçekleşmesi halinde Then deyiminden sonraki satır işletilir. Geçekleşmemesi durumunda ise Else deyiminden sonraki satırlar işletilir. Şartın gerçekleşmemesi durumunda çalışacak Else bloğu istenirse verilmeyebilir.
Buradaki komutlar birden fazla komut içeriyorsa Begin-End deyimleri kullanılmalıdır.
If yapısında Else bloğundan önce komut veya işlem sonunda noktalı virgül kullanılmaz. Case Yapısı Bir değişkenin aldığı bir çok değere göre ayrı komutların çalıştırılması gereken durumlar için If yapısını kullanmak yerine Case yapısını kullanmak avantajlıdır.
Burada değişken parametresi ile belirlenen değişkenin aldığı duruma göre Durum n değerinin karşısındaki komutlar işleme girer. Eğer değişkenin değeri durumlardan hiçbirine uymuyorsa else kısmındaki komutlar çalışacaktır. Case yapısındaki durumu karşılaştıran değişken string tipte veya kullanıcı tipte bir değişken olamaz. Bu değişken değeri sayı olarak ifade edilebilen bir değişken olmak zorundadır. Döngü deyimleri Belirli bir komut parçasının belli şartlar gerçekleşinceye kadar defalarca çalışması gerekebilir. Çalışma sayısının belli olduğu durumlarda for döngüsü diğer durumlarda yani döngü sayısının değişken olduğu durumlarda ise repeat-Until, While-Do blokları kullanılır. For döngüsü
Burada sayaç değişkeni tamsayıya çevirebilen tipte (integer,Longint, ShortInt, byte, word, boolean, Char) bir değişken olması gerekir. For döngüsü Sayaç’ın Başlangıç Değer’inden başlayarak bitiş Değerine kadar sayacı birer artırarak blok içindeki komutları çalıştırır. Başlangıç Değeri, bitiş Değeri den küçükse döngüye hiç girilmez. Sayaç’ın artarak değil azalarak çalışması için downto deyimi kullanılır.
Başlangıç değeri, bitiş değerinden büyükse döngüye hiç girilmez. While-do Bir şart gerçekleştiği sürece çalışması gereken program bloklarında kullanılır.
Burada; şart gerçekleştiği sürece döngü çalışmaya devam eder. For döngüsünün getirdiği bazı kısıtlamalar vardır. Sayaç değişkenimiz tamsayı olmak zorunda ve birer artıp/azalmak zorunda idi. Bu sınırlamaları açmak için while-do döngüsünü For döngüsüne uyarlayabiliriz.
Aynı işi while-do ilede yaparsak
Artımı birden fazla yapmak içinde
Repeat-Until Bu döngü yapısıda şart gerçekleşene kadar çalışması gereken program bloklarında kullanılır.
While-do döngüsünden faklı olarak döngüye girerken değil çıkarken şart kontrol edilir. Döngü Kontrol İfadeleri Bazen döngü bitmeden döngüden çıkmak gerekebilir veya bazı durumlarda döngü içindeki bir miktar kodun çalıştırılması istenebilir. Bu gibi durumlarda döngü kontrol deyimlerini kullanmak gerekir. Break Break prosedürü; for, while veya Repeat döngülerinden birinde bazı şartların gerçekleşmesi durumunda döngüden çıkmak için kullanılır. Continue Continue prosedürü; for, while veya Repeat döngülerinde bazı şartlar gerçekleştiğinde döngünün sonuna gitmeden tekrar başa dönmesini sağlar. Exit Exit prosedürü mevcut program bloğundan, bloğun sonuna ulaşmadan çıkmaya yarar. Çalışan blok bir prosedür ise prosedürden, bir döngü veya şart bloğu ise p bloktan çıkar. Halt Halt prosedürü programdan çıkışı sağlar. Burada istenirse bir parametre ile çıkış kodu programdan geriye dönebilir. |
Mesaj Fonksiyonları Mza WebKURS 2000-Delphi |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bu fonksiyon, Delphi projesinin aktif Form veya penceresinden bağımsız olarak bir dialog kutusu içerisinde kullanıcının dışarıdan bilgi girmesine yarar. Kullanımı:
1 2 3 1-) Bu parametre ile dialog kutusunun başlığı belirtilir. 2-) Bilgi girişi için dialog kutusunda hazırlanan metin kutusunun başlığı girilir. 3-) Metin kutusuna varsayım olarak getirilmek istenen bilgi varsa metin kutusuna hazır olarak getirilmelidir. Örnek: 1-) İlk olarak Unit kullanma bölümüne [DIALOG] eklenir. 2-) Değiken tanımlama bölümüne ise [Ad:string;] eklenir. 3-) Aşağıdaki İşlemler yapılır.
Başlık : Pencerenin başlığını belirler. Mesaj : Pencerede çıkacak olan mesaj belirlenir. Girilen : Pencere içinde yazılması istenilen varsayılan değer belirlenir, hem de kullanıcının girdiği değer bu değişken ile öğrenilir. Fonksiyona geri dönen değer True ise Ok düğmesinin seçildiği False ise Cancel düğmesinin seçildiği belirlenir. Bu fonksiyon, Delphi projesinin istenilen her bölümünde kullanılabilmektedir. Kullanımı:
Örnek:
Ekranın ortasında bir mesajj penceresi görüntüler. Bu pencere ShowMessage prosedürü ile oluşturulan mesaj penceresinden farklı olarak kullanıcıdan onay alması gereken durumlarda kullanılır.
Mesaj : Pencerede çıkacak olan mesaj belirlenir. Tip : Mesaj penceresinin tipini belirler.
Düğme : Pencerede çıkacak olan düğmeyi belirler.
Not: Düğmelerin hangilerinin bulunacağı “[ ]” arasında belirlenir. Örnek : [mbYes,mbCancel] Birden fazla düğme görüntülemek için; MbOkCancel mbAbortRetryIgnore mbYesNoCancel HelpCtx : Yardım dosyasındaki ilgili konu numarası belirlenir. MessageDlg fonksiyonunda kullanıcının seçtiği düğmeyi yani çıkış değerini belirlemek için şöyle değerler kullanılır.
Windows mesaj kutuları konusunda programlara standart pencereler sunar.
Mesaj : Gösterilecek mesajı ifade eder. Başlık : Mesaj Penceresinin başlığını ifade eder. Tip : Mesaj Penceresinde gösterilecek düğme, ,con varsayılan düğme öncelik sırasını temsil eder.
Düğme:
Icon:
Varsayılan düğme:
Öncelik sırası
Geri dönen kullanıcının seçtiği değerler şınlardır.
|
Standart Fonksiyonlar Mza WebKURS 2000-Delphi |
|
Matematiksel ve Lojik Fonksiyonlar Matematik ve lojik işlemleri yapmak için gerekli komutların tamamı Delphi'de mevcut değildir. Ancak mevcut komutlarla olmayan komutları türetmek mümkündür. Matematiksel işlemleri yapmak için gerekli bir çok fonksiyon math ve system unitlerinde tanımlanmıştır. Math unitinde tanımlanmış fonksiyonları kullanabilmeniz için formunuzdaki Uses satırına math unitini eklemeniz gerekir. |
|
Floor, Ceil, Int, frac
(Yuvarlama fonksiyonları)
(İlk iki fonksiyonun kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) floor fonksiyonu sayıyı aşağı doğru yuvarlatırken, ceil fonksiyonu yukarıya doğru yuvarlar. Int fonksiyonu sayını tam kısmını verirken, ceil fonksiyonu sayının ondalık kısmını verir. |
|
Power, IntPower, Sqr, Exp
(Üst işlemleri)
(İlk üç fonksiyonun kullanılabilmesi için uses satırına Math eklenmesi gerekir.) Xy işlemini yapabilmek için power fonksiyonu kullanılır. Eğer üst tamsayı ise IntPower fonksiyonu da kullanılabilir. Katsayı*2üst işlemini yapmak için Ldexp fonksiyonu kullanılabilir. Yani bu fonksiyon iki sayısının üstlerini almak için kullanılır. Ldexp(5,3) şu işleme denk gelir. 5*23 Aynı işlem 5*power(2,3) şeklinde yapılabilmektedir ancak Ldexp fonksiyonu bu işlemi daha hızlı yapar. Ex işlemini yapabilmek için ise exp fonksiyonu kullanılır. Sqr fonksiyonu ise bir sayının karesini almak için kullanılır. |
|
Sqrt(Karekök)
X sayısının karekökü yukarıdaki fonksiyonla alınabilir. Daha yüksek dereceden kökler ise yine power fonksiyonu ile alınabilir. |
|
Hypot(Hipotenüs)
(Fonksiyonun kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) x ve y kenarları verilen dik üçgenin hipotenüsünü hesaplar. Yaptığı işlem aşağıdaki işlemlere denktir. Sqrt(x*x+y*y); |
|
Abs(Mutlak Değer)
Bir sayını mutlak değerini (pozitifini) almak için kullanılır. |
|
LogN, Log2, Ln (Logaritma)
(İlk iki fonksiyonun kullanılabilmesi için uses satırına math eklenmesi gerekir.) Ln, doğal logaritmayı (e tabanındaki logaritma), Log2, 2 tabanındaki logaritmayı, LogN ise taban parametresi ile verilen logaritmayı bulur. LogN(10,x) şeklinde kullanılırsa 10 tabanındaki, LogN(5,x) şeklinde kullanılırsa 5 tabanındaki logaritmayı verir. |
|
Pi(Pi Sayısı)
Hiçbir parametresi olamayan bu fonksiyon matematikteki pi sayısını verir. Geri dönen değer 3.1415926535897932385 sayısıdır. |
|
DegToRad, GradToRad,
RadToDeg, RadToGrad (Açı Dönüşümleri)
(Fonksiyonların kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) DegToRad fonksiyonu derece olarak verilen bir açıyı radyana çevirir. Fonksiyonun yaptığı iş açı grad *PI / 180 işlemine eşittir. GradToRad fonksiyonu gradyan olarak verilen bir açıyı radyana çevirir. Fonksiyonun yaptığı iş açı grad * PI / 200 işlemine eşittir. RadTodeg fonksiyonu radyan olarak verilmiş açıyı dereceye çevirir. Fonksiyonun yaptığı iş açı radyan * 180/PI işlemine eşittir. RadToGrad fonksiyonu radyan olarak verilmiş açıyı gradyana çevirir. Fonksiyonun yaptığı iş açı radyan * 200/PI işlemine eşittir. |
|
RadToCycle, CycleToRad
(Açı Periyodu)
(Fonksiyonların kullanabilmesi için Uses satırına Math eklenmesi gerekir.) RadToCycle fonksiyonu radyan olarak verilen açının periyodunu verir. Yani birim çember üzerinde kaç tur attığını belirler. Açı / (2PI) işlemine eşittir. Diğer fonksiyon ise açı * 2PI işlemine eşittir. |
|
Cos, Sin, Tan, Cotan
(Trigonometrik fonksiyonlar)
(Son iki fonksiyonun kullanılması için Uses satırına Math eklenmelidir.) Trigonometrik fonksiyonlar yukarıdaki fonksiyonlar kullanılır. Sekant ve Cosenant işlemleri sin ve Cos cinsinden yazılabileceği için bunlarda yapılabilir. Sekant:=1/Cos(x); Cosenant:=1/Sin(x); |
|
ArcCos, ArcSin, ArcTan,
(Ters Trigonometrik Fonksiyonlar)
(İlk iki fonksiyonun kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) Ters trigonometrik fonksiyonlar için yukarıdaki fonksiyonlar kullanılır. Bu fonksiyonlardan geriye dönen değer, derece cinsinden değil Radyan cinsindendir. ArcSin, ve ArcCos fonksiyonlarında giren parametre –1, +1 arasında olmalıdır. Özel olarak , sonsuzun ters tanjantı PI/2 olduğundan ve sonsuz sayısıda bilgisayara girilemediğinden ArcTan fonksiyonu geliştirilmiştir. Bu fonksiyon ArcTan(y/x) işleminin sonucunu verir ve x=0 olarak girilirse sonsuz derecenin ters tanjantı bulunmuş olur. Ters Sekant, Ters Cosenant ve Ters Cotanjant fonksiyonları ise yukarıdaki fonksiyonlardan aşağıdaki işlemlerle türetilebilir. Artcosec:= arctan(x/sqrt(x*x-1))+ (abs(x)/x-1) *1.5708; Arcsec:= arctan(x/sqrt(x*x-1))+ (abs(x)/x-1)/2 *1,5078; Arccot:=arctan(x)+1.5708; |
|
Cosh, Sinh, Tanh
(Hyperbolik fonksiyonlar)
(Bu fonksiyonların kullanılması için Uses satırına Math gerekir) Hyperbolik işlemleri yapmak için yukarıdaki fonksiyonlar tanımlanmıştır. Hyperbolik Sekant ,Hyperbolik Cosenant ve Hyperbolik cotanjant fonksiyonları ise aşağıdaki gibi türetilebilir Sech:= 2/exp(x)+exp(-x)); Cosech:=2/(exp(x)-exp(-x)); Cotanh:=(exp(x)+exp(-x))/exp(x)-exp(-x)); |
|
ArcSinh, ArcCosh, ArcTanh
(Ters Hyperbolik Fonksiyonlar)
(Bu fonksiyonların kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) Ters Hyperbolik işlemleri yapmak için yukarıdaki fonksiyonlar tanımlanmıştır. Ters Hyperbolik Sekant, Ters Hyperbolik Cosenant ve Ters Hyperbolik Cotanjant fonksiyonları ise aşağıdaki gibi türetilebilir. Asech:=Ln((sqrt(-x*x+1)+1)x); Acosech:=Ln((abs(x)x*sqrt(x*x+1)+1)x); AconTanh:=Ln((x+1)/(x-1))/2; |
|
Poly (Polinom
Fonksiyonları)
(fonksiyonun kullanılabilmesi için Uses satırına math eklenmesi gerekir.) Delphi’de a0+a1x+a2x2+a3x3+........+anxn şeklinde fonksiyonların sonucu poly Fonksiyonuyla hesaplanabilir. Fonksiyondaki katsayılar a0.....an katsayılarını temsil eder. |
|
Shl, Shr (Bitleri Sola ve
Sağa Kaydırma) Shl ve Shr komutları bitler üzerinde detaylı işlemler yapabilmek için gerekli komutlardır. Shl ve shr komutlarının yaptığı işlerden biri çok hızlı çarpma ve bölme yapmasıdır. |
|
Dec, Inc (Artırma ve
Azaltma) Dec ve Inc prosedürleri toplama ve çıkarma işlemi yapmalarına karşın normal toplama ve çıkarma işlemine göre daha avantajlıdır. X:=x+1; satırı ile Inc(x); satırı aynı işi yapmalarına karşın farklı yöntemleri kullanırlar. İkinci yöntem birincisine oranla çok daha hızlıdır. Özellikle döngülerdeki artım ve azaltmalarda Inc ve Dec fonksiyonların kullanımı döngü hızını artıracaktır. Inc(x);{x=x+1}; Inc(x,5);{x=x+5); Dec(x);{x=x-1}; Dec(x,5);{x=x-5}; Buralarda kullanılacak sayılar tamsayı olmalıdır. |
|
Mod (Bölmede Kalan)
Mod operatörü x sayısının y sayısına bölümünde kalanı verir. Bu operatör bir sayının katlarını bulmak için kullanılır. Örneğin her 10 işlemde bir başka bir işlem yapmak için işlem sayısını tutan değişken 10 sayısı ile mod işlemine tabi tutulur. Sonuç sıfır ise değişken 10 sayısının katıdır. (0,10,20 vb) |
|
Sum, SumOfSquares,
SumsAndSquares, Mean (dizi toplamı ve ortalama)
(fonksiyonların kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) Mean fonksiyonu dizi parametresi ile fonksiyona giren dizideki elemanların aritmetik ortalaması bulur. Yani dizideki bütün elemanları topladıktan sonra eleman sayısına böler. Sum fonksiyonu Dizi parametresi ile fonksiyona giren dizideki elemanların toplamını bulur. SumOfSquares fonksiyonu dizi parametresi ile fonksiyona giren dizideki her elemanın karesini alarak toplamını bulur. Sumsandsquares fonksiyonu ise Sum ve sumofsquares fonksiyonunun yaptığı işi tek seferde yapmaya yarar. Dizi parametresi ile fonksiyona giren dizideki elemanların toplamını ikinci parametre ile karelerinin toplamını ise üçüncü parametre ile verir. |
|
MinValue, MinIntValue,
MaxValue, MaxIntValue (En büyük ve en küçük değer)
(Fonksiyonların kullanılabilmesi için Uses satırına Math eklenmesi gerekir.) Bu fonksiyonlar bir dizi içindeki en büyük en küçük sayıyı verir. MinIntValue ve MaxIntValue fonksiyonları tam sayı dizilerde diğerleri ise reel sayı dizilerde kullanılır. |
|
Hi, Lo (Yüksek ve Düşük
Seviyeli Byte) Bazen bir sayının yüksek ve düşük seviyeli baytlarını ayırmak gerekir. Hi ve Lo fonksiyonları sayının yüksek ve düşük seviyeli kısımlarını ayrı ayrı verir. |
|
High, Low (Üst ve Alt
Sınırla) High ve Low fonksiyonları bir sayı tipi için kullanıldığında o tip alabileceği en büyük ve en küçük değerleri verirler. |
|
Rasgele Sayı Üretim Fonksiyonları Daha çok oyunlarda kullanılan rasgele sayı üretme işlemleri Delphi’de Random fonksiyonu ile yapılır. |
|
Random
Fonksiyon 0 ile üst sınır arasında rasgele sayı üretir. Üst sınır parametresi verilmezse 0 ile 1 arasında sayı üretir. |
|
Randomize Randomize fonksiyonunun yaptığı tek iş rasgele sayı üretim fonksiyonunun başlangıç referansını belirler. Fonksiyondan herhangi bir değer geri dönmez. Yalnız Random fonksiyonunun ürettiği sayılar etkiler. |
|
Tip Değiştirme Fonksiyonları Bazen bir sayıyı bir string içinde veya bir reel sayıyı tamsayı gibi kullanmak gerekir. |
|
IntToStr(Sayı) Tamsayı tipinden olan bir değişken, string bir değişkene atanmadan önce bu fonksiyonla stringe çevrilmelidir. |
|
IntToHex (Sayı, basamak
sayı) Sayi parametresi ile verilen sayıyı basamak sayısı kadar basamağı olan Hexadecimal (Onaltılık sistem) sayıya çevirerek sonucu geriye string olarak gönderir. FloatToStr (Sayı) CurrtoStr (Sayı) FloatToStr fonksiyonu herhangi bir tipteki reel sayıyı stringe çevirir. Sonucun sadece 15 basamağı alınır. CurrToStr fonksiyonu ise Currency tipindeki sayıları 19 basamağa kadar çevirir. Yani daha hassastır.
FloatToStrF(Sayi,Format,Hassasiyet,Ondalik) CurrToStr(Sayi,Format,Hassasiyet,Ondalık) FloatToStrF fonksiyonu herhangi bir tipteki reel sayıyı istenen format ta stringe çevirir. CurrToStrF ise aynı şekilde çalışır.
Bu parametre ile sayıdaki kaçıncı basamağa kadar tam çevirme işlemi yapılacağı belirlenir.
Bu parametre virgülden sonra kaç basamağın gösterileceğini belirler.
Bu parametreye aşağıdaki değerler verilerek sayının nasıl çevrileceği belirlenir. FfExponent: Format parametresine verilen bu değer sayının üstel formda gösterileceğini belirler. FfFixed: Sayı ondalık formatta gösterilir. Ffnumber: Sayı ondalık formatta ve binler hanelerine ayrılarak gösterilir. FfCurrency: Sayı para formatına dönüştürülür. FfGeneral: Sayı üstel veya ondalık formatlarından hangisine uygunsa o formatta görüntülenir.
FormatFloat(Format Sayi) FormatFloat fonksiyonu Extended tipindeki bir sayısı istenilen biçimde string tipine dönüştür.
Chr(Ascii Kod) Ascii kodu verilen sayının karakter karşılığını gönderir.
StrToInt(Str) Str stringini tamsayıya çevirir. StrToIntDef(Str,varsayılan) Str stringini tamsayıya çevirir. StrToFloat(StrSayi) Bu stringi reel sayıya çevirir. Val(String,Sayi,Durum) Val prosedürü stringi herhangi tipteki bir sayıya çevirir. Ord(Karakter) Verilen karakterin Ascii kodunu verir.
FillChar, StringOfChar (Karakter doldurma) FillChar(str,adet,karakter) Str parametresi ile verilen stringi adet kadar karakter ile doldurur. StringOfChar(Karakter,Adet) Bu fonksiyon da adet kadar karakter den oluşan stringi oluşturur.
AnsiCompareText, AnsiCompareStr (Karşılaştırma) AnsiCompareText(s1,s2) Ansicomparestr(s1,s2) AnsiCompareText fonksiyonu S1 stringi ile s2 stringini büyük-küçük harf ayrımı yapmadan karşılaştırır. AnsicompareStr fonksiyonu ise bunları farklı kabul ederek karşılaştırır. {Devamı Var} |
Mehmet Zahit Aydın Aksaray Anadolu Teknik Lisesi Bilgisayar Bölümü |
Ana Sayfa |