Memik Yanık - Kişisel Web Sitesi Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS RSS | İletişim

AnsiCompareStr() Fonksiyonu


Bugüne kadar kitaplarımda kullanmak üzere yazdığım bütün kodların doğruluğunu mutlaka test etmişimdir. Ancak bazen dalgınlık eseri okura hatalı kodlar verdiğim mutlaka olmuştur. Örneğin kitap metni içine aldıktan sonra örneğin hatalı olduğunu fark ettiğimde, kodları hemen düzeltmişimdir. Ancak tam bu sırada kodun düzeltilmiş halini kitaba tekrar aktarmayı unutuğum olmuştur. Bazende bir sınıfın metodundan özellik veya Class'tan nesne diye söz ettiğim olmuştur. Anlayacağınız 1000 sayfalık bir kitapta 3-5 hatanın olması kisişel görüşüme göre son derece normaldir. 

Bazen de başka bir kaynakta hatalı koda veya yanlış anlamalara neden olacak açıklamalara rastladığım olur. İlk olarak Delphi 7 konulu bir kitaptaki yanlış anlamaya neden olacak basit bir örnekten söz edeceğim. Bu örneğe ilk olarak ima ettiğim kitaptan olduğu gibi alıntı yapılan bir programcının kişisel Web sitesinde rastladım. Örneğin azıcık değiştirilmiş halini aşağıda verdim.

procedure TForm1.Button1Click(Sender: TObject);
Var
   Metin, Sonuc : AnsiString;
   Sayi : Integer;
begin
  Metin := 'Center';
  Sonuc := 'Education Center';
  Sayi := AnsiCompareStr(Metin, Sonuc);
  If Sayi = 0 Then Self.Caption := 'Aynı' Else
  If Sayi > 0 Then Self.Caption := 'İçinde Yok' Else
  If Sayi < 0 Then Self.Caption := 'İçinde Var';
end;

Burada sözü edilen AnsiCompareStr() fonksiyonu 2 string parametreye sahiptir. İlk parametre olarak verilen string bilgi 2. parametre ile karşılaştırılmaktadır. Bu fonksiyon kendisine parametre olarak verilen her iki String bilgi birbirine eşitse geriye 0 göndermektedir. Eğer ilk bilgi ikinciden büyükse bu kez geriye pozitif, değilse negatif bilgi göndermektedir. Şimdi bu bilgilerin ışığında bu örneği yorumlayalım. 1. parametre olarak verilen "Center" kelimesi ikinci parametre olarak kullanılan string bilgiden küçük olduğu için geriye 0'dan küçük bir değer gönderilir. 

Bu örmekte de geriye eksi(-) değer gönderilmekle birlikte bunun nedeni "Center" kelimesinin "Education" kelimesinden küçük olmasından dolayıdır. Yoksa 2. parametrenin "Center" kelimesini içermesinden dolayı değildir. Bu nedenle bu örnek aşağıdaki gibi düzelense bile AnsiCompareStr() fonksiyonu geriye eksi değer gönderir.  

procedure TForm1.Button1Click(Sender: TObject);
Var
   Metin, Sonuc : AnsiString;
   Sayi : Integer;
begin
   Metin := 'Center';
   Sonuc := 'Eğitim Merkezi';
   Sayi := AnsiCompareStr(Metin, Sonuc);
   If Sayi = 0 Then Self.Caption := 'Aynı' Else
   If Sayi > 0 Then Self.Caption := 'İçinde Yok' Else
   If Sayi < 0 Then Self.Caption := 'İçinde Var';
end;

Delphi 07.07.2009 08:16:33

YORUM YOK


YorumlarYorum Yaz
Ana Sayfa | Hakkımda | Kitap Önerileri | Fotoğraflarım | RSS | İletişim
Memik Yanık 2004-2009 © Tüm Hakları Saklıdır.
Hazırlayan www.semgoksu.com