https://www.youtube.com/watch?v=jEtDyg4ywdE

Örnek Uygulama

  • 1.Adım
  • Function ve Procedure

 

File > New > Multi Device Application > Blank Application açarak çalışmaya başlıyoruz.

→ Delphi tamamen nesneye yönelimlidir.

→ Siz nesneye yönelik çalışmasanız bile Delphi arka planda bütün nesneleri oluşturur.

Palette> TEdit ekliyoruz > Listbox ekliyoruz. Tekrar forma tıklıyoruz çünkü Listbox içine nesne alabiliyor. 4 Tane TMemo ekliyoruz.

Listbox > Object inspector > Properties > Align→Left.

 Edit  > Object inspector > Properties > Align → Top.

Edit’ e sağ tuş > Items Editor > add item > clear button ve edit button ekledik.

Listbox’  a sağ tıklıyoruz > Items Editor > ListboxGroupHeader > Add Item.

Listbox’ a sağ tıklıyoruz> Items Editor > Listbox Item (5 adet) ekliyoruz.

Listbox’ a eklediklerimizi seçiyoruz(Ctrl ile) > Object inspector > Properties > Text kısmını siliyoruz > Height kısmınıda 40 vererek boyutunu ayarlıyoruz. ListboxGroupHeader1’in Text kısmına Temel Komutlar yazıyoruz. Listbox Itemlara tıklayarak içlerine buton ekliyoruz. Buttonların içinin Align’ ını > client seçerek içinde bulunduğu nesnenin tamamını kaplıyor. Listboxların hepsine aynı işlemi uyguluyoruz. Memodan  Ctrl + C ile 4 tane kopyalıyoruz. Derleyerek Windows görünüşüne bakıyoruz. Button1’e çift tıkladığımızda buttonun OnClick eventında kendisi otomatik bir procedure açıyor ve bunun tanımlamasınıda yapıyor. Bize sadece begin-end arasına komut yazmak kalıyor. Button1 > Object inspector > Properties > Name → BtnTersCevir. Name ile birlikte Text de değişiyor. İstersek Textini değiştirebiliriz. Biz Ters Çevir yaptık(textde Türkçe karakter kullanabiliyoruz). Ters Çevir fonksiyonumuzu yazmak için Ters Çevir butonuna tıklıyoruz.

→Private kısmına yazdığımız functionları sadece bu formda kullanabiliriz.

→Public kısmına yazdığımız procedur ve functionları hem bu formda hemde bu formu çağıran diğer formlarda kullanabiliriz.

Fonksiyonumuzu tanımlamak için biz public’e yazıyoruz.

→Procedure ve Functioun farkı = procedure değer döndürüyor, function değer döndürmüyor.


public
   {Public declarations}
   procedure TersCevir(s: String);

Ctrl + Shift + C ile otomatik olarak headerlar yazılıyor.


procedure TForm1.TersCevir(s: String);
begin
//buraya komutumuzu yazıyoruz.
end;
end.

 

Komutumuz: ShowMessage (System.Strutils.ReverseString(s));

→ Tanımlanmamış kütüphane varsa uses kısmında tanımlıyoruz.

Buttonun clickine gidip komutumuzu yazıyoruz .
procedure TForm1.BtnTersCevirClick(Sender: TObject);
begin
   TersCevir(Edit1.Text);
end;

Çalıştırıyoruz ve açılan pencerede 123 yazıp Ters Çevir butonuna tıklıyoruz 321 olarak değeri görüyoruz.

  • 2. ADIM

Button2’ye tıklıyoruz. Object inspector > Properties > Name → BtnKarakterSayısı. Text→ Karaktersayısı Bul. Önceki adımda procedure kullanmıştık burada ise function tanımlayalım. Public kısmına geliyoruz. Bir önceki adımda procedurenin altına function tanımlıyoruz

Public
   {Public declarations}
   procedure  TersCevir (s: string);
   function KarakterSayisiBul (s: string): Integer//(function olduğu için değişken tipini belirlememiz gerekiyor. Sayıyı döndüreceği için ‘integer’ yaptık);
end;

Shift + Ctrl + C → bir fonksiyon tanımladığını görüyoruz.


function TForm1.KarakterSayisiBul(s: string): Integer
begin
end;

Function ve Procedure farkı

→ Functionda bir result(sonuç) var. Functionda geriye dönen result oluyor.

→Prodecurede geri döndürme işlemi için başka yöntemler kullanılması gerekiyor.

→Functionda standartta bir tane değişken(değer)döner ama biz bunu farklı nesneler döndürerek nesnelerin içerisinde birden fazla değer alacak şekilde de ayarlayabiliriz.

Result’ ı yazmaya başlıyoruz.


function TForm1.KarakterSayisiBul(s:string): Integer;
begin
Result : = Length(s); //(Girilen string değerin karakter sayısını döndüren bir function)
end; 

Design kısmından Karakter sayısı bul’a tıklayarak kod satırına gidiyoruz. Procuderenin altına var yazarak değişken tanımlıyoruz.Değişkeni sadece bu kısımda kullanabildiğimizi unutmayalım. Eğer üst kısımda var’ ın altında tanımlasaydık bütün function ve prodecurelerde kullanabilirdik


procedure TForm1.BtnKarakterSayisiClick(Sender: TObject);
var
sayi: integer
begin
if KarakterSayisiBul(Edit1.Text) > 3 then
ShowMessage (‘üçten büyük’);
else
ShowMessage (‘üçten küçük’);
end; 

 

Yazdığımız kod satırlarında; if satırında Edit1 deki karakter sayısı 3’ten büyükse ekrana üçten büyük yazdıracak. Eğer koşulu sağlamıyorsa else satırının altındaki üçten küçük satırını yazdıracaktır.

→ Eğer birden fazla satır yazmak istersek if –else kısmına; bloklama işlemi kullanmamız gerekecektir. Bunuda begin-end kullanarak sağlarız.

Bloklama işlemine örnek;

if KarakterSayısıBul (Edit1.Text) > 3 then
begin
ShowMessage (‘üçten büyük’);
Memo1.Lines.Add(Edit1.Text);
end
else
begin
ShowMessage(‘üçten küçük’);// (Bloklama işleminde illaki birden fazla satır yazmak zorunda değiliz tek satırda yazabiliriz.)
end;

Bloklamayı tek tek elle yazmak yerine kısayolu; if yazıyoruz ve ardından açılan pencerede code templatelerini görüyoruz ve ihtiyacımıza göre seçerek sadece kod kısımlarını dolduracak şekilde kısa yoldan halletmiş oluruz.

  • 3. Adım

İlk 2 adımda girdiğimiz değerler kaydedilmiyor bunu sağlamak için 3.adımımızda girdiğimiz değerlerin memolara aktarılmasını sağlayacağız. EditButton1 'e tıklıyoruz ve açılan kod satırına gidip kodlarımızı yazıyoruz


procedure TForm1.EditButtonClick(Sender:TObject);
begin
Memo1.Lines.Add(Edit1.Text);
Memo2.Lines.Add(IntToStr(KarakterSayisiBul(Edit1.Text))); // (Memo sadece str değer kabul ettiği için IntToStr yaptık.)
end;

Çalıştırdığımızda 1.Memoda Edit1e yazılanların ters halini, 2.Memoda karakter sayılarını görüyoruz.

  • 4. Adım
  • Diziler- Döngüler

Button3 ile Memo1’in içindeki değerleri ters çevirip Memo3’ün içerisine yazdıracağız. Button3’e çift tık ile kod satırına gidiyoruz


procedure TForm1.Button3Click(Sender:TObject);
begin
   While True do // (while yazıp Ctrl + Space basarak kodun devamını seçeneklerden bize uygun olanıyla tamamlıyoruz.)
   begin
   end;
end;

While döngüsündeki şart sağlanıyorsa begin-end komutlarımız çalışacaktır. Bunun için local bir değişken tanımlayarak komutlarımızı yazmaya başlıyoruz.


procedure TForm1.Button3Click(Sender:TObject);
var
i: integer
begin
   whie i < memo1.Lines.Count do //(Memo1’in kayıt sayısından küçükse döngü devam etsin diyoruz.)
   begin
     memo3.Lines.Add(System.Strutils.ReverseString(memo1.Lines[i]))
   end;
end;

→ Memodaki değer nasıl çağırılır?

 

Köşeli parantez [ ] içine satır numarası yazılarak Lines’in içindeki değeri alabiliriz.

Desig kısmından butonun name ve textine giderek karışıklık olmaması için değiştiriyoruz. Text→ Tümünü Ters Çevir. Name→ BtnTumunuTersCevir. Code kısmına gidip döngüye değerleri veriyoruz.


var
 i : integer;
begin
i : 0 ;
while i < memo1.LinesCount do
  begin
     Memo3.Lines.Add(System.Strutils.ReverseString(Memo1.Lines[i]));
      i : = i + 1; //(İ’yi artırmak gerekiyor for döngüsü kullansaydık ‘i’ otomatik artacaktı.)
  end;
end;

→ While veri tabanlarında çok kullanılıyor.

Performans kullanımı olarak en hızlı çalışan diziler;

-pointer

-sabitdizi *

-dinamik dizi

Listler diziye göre çok yavaş kalıyor. Standart uygulamalarda bu yavaşlık hissedilmiyor

  • 5. Adım

Bir dizi tanımlayalım dizinin içindeki değerleride for döngüsüyle içeriye alalım. Button4 > Name→ BtnSabitDizi.

Sabit dizi ve Değişken dizi farkı =  Sabit dizide dizi tanımlandığında kaç tane elemanı olacağı bellidir. Değişken dizide kaç tane elemanı olacağı dizi tanımlandıktan sonra belli olur.

Biz değişken dizi kullanacağız genelde çünkü memoya kaç tane eleman girileceğini biz bilemeyiz. Örnek amacıyla sabit dizi yapacağız. Text→ Sabit Dizi. Yine butonumuza çift tıklayarak kod satırımıza gidiyoruz.


procedure TForm1.BtnSabitDiziClick(Sender:TObject);
var
   Dizi: array[1..3] of string // kaç eleman olacağını belirledik, dizinin tipini tanımladık.
   I:integer
begin
   if Memo1.Lines.Count > 3 then // memo1deki satır sayısı  > 3 ten ise dizi çalışsın.
  for I : low to high do // for yazıp tab yaptık ve gördük ki yukarıda I: integer bizim için tanımlandı.

procedure TForm1.BtnSabitDiziClick(Sender:TObject);
var
   Dizi: array[1..3] of string
   I:integer
begin
   if Memo1.Lines.Count > 3 then
   for I : 0 to Length (Dizi) do
   Dizi[i] : = Memo1.Lines[i] // dizinin i’inci elemanını memo1in satırının i’inci elemanına ata.
   else
   ShowMessage (‘Yeterli kayıt yok’);
end; 

Çalıştırıyoruz ekrana yazdırmadığımız için butona basakta bir şey olmadığını görüyoruz yazdırmadan çalıştığını görmek için F9 ile çalıştırıyoruz. F8’ e basarak for döngüsüne girip satırların üzerinde fare ile gezdiğimizde değerleri görüyoruz.

  • 6. Adım

DEĞİŞKEN DİZİ

Button5’e tıklayarak kod satırına gidiyoruz.


procedure TForm1.ButtonClick (Sender: TObject);
var
  DegiskenDizi : array of string ;
  I : integer;
begin
 if Memo1.Lines.Count > 0 then
begin
SetLength(DegiskenDizi,memo1.Lines.Count);// dizinin uzunluğunu ayarlama komutu
for I : = 0 to Memo1.Lines.Count-1 do
begin
DegiskenDizi[i];
end;
end
 else
  begin
  end;
end;

F9 ile satır satır kontrol edebiliriz.

 

  • 7. Adım
  1. Bir button ekliyoruz. Button6 > Name → BtnDiziToMemo. Buttona tıklayarak kod satırına gidiyoruz.


procedure TForm1.BtnDiziToMemoClick (Sender: TObject);
var
   I: integer
begin
   for I : = 0 to High (DegiskenDizi) -1 do
   begin
   Memo4.Lines.Add(DegiskenDizi[i])
end; 

 

 

DegiskenDizi : array of string ; satırını kopyalayıp yukarıya yapıştırıyoruz global olarak kullanmak için.

Bizi çalıştırıyoruz ve değer giriyoruz. Değişken diziye basıyoruz şu anda diziyi hafızaya aldı, diziyi aktarıldığını görüyoruz. -1 Dediğimiz için 1 eksiğiyle birlikte ekranımızda görüyoruz. Şimdide yaptığımız çalışmayı android cihazda göstereceğiz. Mobil tarafa almak için Targets Platform'un android kısmına tıklıyoruz. Buraya bir android cihaz bağlamamız gerekiyor.Biz cihazımızı seçiyoruz ve yapıyoruz kısa süre içinde uygulama mobil cihazımıza geliyor.Değer girip ekranda  görebiliyoruz.

 

 

Firma Bilgileri


Camart Araştırma Geliştirme Yazılım Otomasyon San. Tic.Ltd. Şti.

Mersis no : 3356 7133 6775 9746

info@camartarge.com

Vergi no : 196 074 62 30

Tel : +90 850 333 80 20

İban (TL): TR30 0020 5000 0085 3809 5000 03

Arge :

Paü teknoloji geliştirme bölgesi (Teknokent)

idari bina d blok no g05 Denizli

 

İban (USD):TR03 0020 5000 0085 3809 5001 01 


Barbaros Mah. Halk Cad. No 47 / 2 34746 Ataşehir İstanbul

İban (Euro):TR73 0020 5000 0085 3809 5001 02 

 
 
 
 
 
 
Harita verileri ©2015 Google

İletişim

Facebook Pinterest Twitter Google+ Dribbble