9. String İşlemleri (String Manipülasyonu ve Formatlama)

Delphi Logo
Delphi Logo
image text

9. String İşlemleri (String Manipülasyonu ve Formatlama)

Delphi programlama dilinde, metin verileriyle çalışmak, birçok uygulamanın temelini oluşturur. Kullanıcı arayüzlerinden veri tabanlarına, dosya işlemlerinden ağ iletişimine kadar her alanda stringlerle etkileşim halindeyiz. Delphi, string manipulasyonu ve formatlama için zengin bir araç seti sunar. Bu makalede, Delphi’de stringlerle nasıl etkili bir şekilde çalışabileceğinizi, farklı string fonksiyonlarını ve formatlama tekniklerini detaylı bir şekilde inceleyeceğiz.

String Tanımlama ve Kullanımı

Delphi’de stringler, String veri tipiyle tanımlanır. Delphi’nin modern versiyonlarında (Delphi 2009 ve sonrası), UnicodeString kullanılır; bu da çok çeşitli karakter setlerini destekleyerek global uygulamalar geliştirmeyi kolaylaştırır. Temel string tanımlama ve kullanma örneklerine bakalım:

Pascal

var
  isim: String;
  soyisim: String;
  tamAd: String;
begin
  isim := 'Ahmet';
  soyisim := 'Yılmaz';
  tamAd := isim + ' ' + soyisim; // String birleştirme
  ShowMessage(tamAd);
end;

Bu örnekte, iki string değişkeni tanımlayıp, değerlerini atadık ve ardından bu iki stringi birleştirerek yeni bir string oluşturduk. + operatörü, Delphi’de string birleştirme için kullanılır.

Temel String Fonksiyonları

Delphi, stringlerle çalışmayı kolaylaştıran birçok yerleşik fonksiyon sunar. İşte en sık kullanılanlardan bazıları:

  • Length(String): Bir stringin uzunluğunu (karakter sayısını) döndürür.
  • Copy(String, Başlangıç, Adet): Bir stringin belirli bir bölümünü kopyalar.
  • Pos(AltString, String): Bir alt stringin, bir string içindeki ilk konumunu bulur. Eğer alt string bulunamazsa, 0 döndürür.
  • Delete(String, Başlangıç, Adet): Bir stringden belirli sayıda karakteri siler.
  • Insert(AltString, String, Pozisyon): Bir stringin içine başka bir stringi ekler.
  • UpperCase(String): Bir stringi tamamen büyük harfe çevirir.
  • LowerCase(String): Bir stringi tamamen küçük harfe çevirir.
  • Trim(String): Bir stringin başındaki ve sonundaki boşlukları temizler.
  • TrimLeft(String): Bir stringin solundaki boşlukları temizler.
  • TrimRight(String): Bir stringin sağındaki boşlukları temizler.

Örnek Kullanımlar

Bu fonksiyonların nasıl kullanıldığına dair bazı örnekler görelim:

Pascal

var
  metin: String;
  uzunluk: Integer;
  altMetin: String;
  pozisyon: Integer;
begin
  metin := '  Merhaba Dünya!  ';
  uzunluk := Length(metin); // Uzunluk: 17 (boşluklarla birlikte)
  ShowMessage('Metnin uzunluğu: ' + IntToStr(uzunluk));

  altMetin := Copy(metin, 3, 7); // AltMetin: 'Merhaba'
  ShowMessage('Alt metin: ' + altMetin);

  pozisyon := Pos('Dünya', metin); // Pozisyon: 12
  ShowMessage('Dünya kelimesinin pozisyonu: ' + IntToStr(pozisyon));

  Delete(metin, 1, 2); // Metin: 'Merhaba Dünya!  ' (baştaki boşluklar silindi)
  ShowMessage('Silinmiş metin: ' + metin);

  Insert('Yeni ', metin, 9); // Metin: 'Merhaba Yeni Dünya!  '
  ShowMessage('Eklenmiş metin: ' + metin);

  metin := Trim(metin); // Metin: 'Merhaba Yeni Dünya!' (baştaki ve sondaki boşluklar silindi)
  ShowMessage('Trimlenmiş metin: ' + metin);
end;

String Formatlama

String formatlama, değişken değerlerini belirli bir düzende bir stringe yerleştirmek için kullanılır. Delphi, bu işlem için Format fonksiyonunu ve FormatFloat fonksiyonunu sunar.

Format Fonksiyonu

Format fonksiyonu, genel amaçlı formatlama için kullanılır. Biçimlendirme stringi ve bir dizi parametre alır.

Pascal

var
  ad: String;
  yas: Integer;
  mesaj: String;
begin
  ad := 'Ayşe';
  yas := 25;
  mesaj := Format('Merhaba, %s! Yaşınız: %d', [ad, yas]);
  ShowMessage(mesaj); // Çıktı: Merhaba, Ayşe! Yaşınız: 25
end;

Bu örnekte, %s stringleri, %d ise integer değerleri temsil eder. Format fonksiyonuna geçirilen dizi, bu yer tutucuların yerine konacak değerleri içerir.

FormatFloat Fonksiyonu

FormatFloat fonksiyonu, ondalıklı sayıları belirli bir biçimde formatlamak için kullanılır. Özellikle para birimi veya hassas ölçümlerle çalışırken kullanışlıdır.

Pascal

var
  fiyat: Double;
  formatliFiyat: String;
begin
  fiyat := 1234.567;
  formatliFiyat := FormatFloat('0.00', fiyat); // İki ondalık basamaklı format
  ShowMessage('Fiyat: ' + formatliFiyat); // Çıktı: Fiyat: 1234.57 (yuvarlama yapılır)

  formatliFiyat := FormatFloat('#,##0.00', fiyat); // Binlik ayraçlı format
  ShowMessage('Fiyat: ' + formatliFiyat); // Çıktı: Fiyat: 1,234.57
end;

Bu örnekte, '0.00' format stringi, sayının iki ondalık basamakla gösterilmesini sağlar. '#,##0.00' ise binlik ayraçlarını ekler.

String Builder Kullanımı

Büyük string manipulasyonları yaparken, özellikle döngüler içinde string birleştirmeleri yaparken, performans sorunları yaşanabilir. Bu durumda StringBuilder sınıfını kullanmak daha verimli olabilir. StringBuilder, stringleri bellekte sürekli yeniden oluşturmak yerine, bir arabellek kullanarak stringleri bir araya getirir ve sonunda tek bir string olarak döndürür.

Pascal

uses
  System.SysUtils, System.Classes;

var
  i: Integer;
  sb: TStringBuilder;
  sonuc: String;
begin
  sb := TStringBuilder.Create;
  try
    for i := 1 to 1000 do
    begin
      sb.Append('Satır ' + IntToStr(i) + #13#10); // #13#10: Yeni satır karakteri
    end;
    sonuc := sb.ToString;
    // ShowMessage(sonuc); // Çok uzun olduğu için göstermiyoruz
  finally
    sb.Free;
  end;
end;

Bu örnekte, TStringBuilder nesnesi oluşturulur, döngü içinde stringler bu nesneye eklenir ve sonunda ToString metodu ile tek bir string elde edilir. try...finally bloğu, StringBuilder nesnesinin her durumda serbest bırakılmasını sağlar.

Sonuç

Delphi’de string işlemleri, uygulama geliştirmenin ayrılmaz bir parçasıdır. Bu makalede, temel string fonksiyonlarını, formatlama tekniklerini ve StringBuilder sınıfını kullanarak daha verimli string manipulasyonları yapmayı öğrendik. Bu bilgiler, Delphi projelerinizde metin verileriyle daha etkili bir şekilde çalışmanıza yardımcı olacaktır. String manipulasyonu ve formatlama konusundaki bu bilgilerle, uygulamalarınızı daha kullanıcı dostu ve işlevsel hale getirebilirsiniz.

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*