‘Persistance’ Etiket Arşivi

Delphi Win32 & Lambda Expressions

// 16 Mayıs 2009 // 8 Yorum » // Delphi, Programlama

C# 3.0 ile birlikte gelen Lambda Expressionlar hakkında hemen hemen pek çok yerde makale yada yazıya rastlamak mümkün. Bu makalelerin bazılarında Lambda ifadelerin geleceğin programlama özelliği olduğu yönünde abartılı görüşler olsa da yine de faydalı ve olması gereken özellikler olduğu kanaatindeyim bende. Ancak bazı Lambdacıların da bilmesi gerekir ki bu programlama alemine kesinlikle yeni girmiş bir unsur değildir. Bazı programlama dillerinde bu yetenek çok uzun zamanlardan beri mevcut. Ancak maalesef Delphi’de henüz yok. En azından Win32 versiyonunda yok, Delphi Prism’de var.

O zaman bende kolları sıvadım ve tam anlamı ile Lambda Expressions gibi olmasa , onun gücüne yakınlaşamasa da, yine de benzer bir yapıyı kodlamak istedim. Lambda ifadelerinin genel kullanım amacı SQL sorgularında olduğu gibi bir veri kümesini filtrelemek olarak düşünülebilir. Bizde Delphi’de yazacağımız bir liste sınıfına bu özelliği kazandırmaya çalışacağız örneğimizde. Hatalarımız, eksiklerimiz olursa şimdiden affola diyerek başlayalım kodlamaya.

  TOperator = (opEqual, opGreater, opSmaller, opDifferent, opLike);

  TMyList = class(TList)
  public
    function Where(const PropertyName, PropertyValue : Variant; Operator : TOperator = opEqual) : TMyList;
    function InheritsFrom(const aClass : TClass) : TMyList;
  end;

(more…)

DefineProperties nedir, nasıl kullanılır..?

// 15 Mayıs 2009 // 3 Yorum » // Delphi, Programlama

Sevgili Sadettin’in güzel anlatılmış nesne kopyalama örneğinden sonra Furkan arkadaşımızın yorumu bana bu makaleyi yazma ihtiyacı hissettirdi.Diyelim ki bir class tasarladık süsledik püsledik, cillop gibi oldu. Ama bu class’ımızı istediğimiz zaman hafızadaki o anki görünümü ile saklamak ve tüm özellikleri ile yine istediğimiz bir anda tekrar yüklemek istedik. Programcı değilmiyiz isteriz biz herşeyi ;)

Bunun için başladık araştırmalara nasıl saklarım nasıl yüklerim vs. diye..Birde baktık ki Sadettin bunun için birşeyler yazmış sağolsun.Biraz da Delphi Help’i kurcaladık, eh güzel artık yazabiliriz. Yazdık bitirdik, save de ettik. Bir yükledik baktıkkı sadece published property’ler saklanmış dolayısı ile onlar okunmuş.Haydaa dedik bu da ne ki şimdi..Object Inspector’a ihtiyacım yok ki benim bütün property’lerimi published tanımlayayım.. Hatta ben mazoşist birisiyim, private olan property’lerim bile saklansın abi! dediniz. Eee ne olacak şimdi ?

“O zaman kendin yazacaksın kardeşim!” diyor Delphi böyle sorulara cevap olarak. İyide onu nasıl yapacağız derseniz, eh onuda ben nacizane bilgilerime dayanarak sizlerle paylaşmaya çalışayım.

Öncelikle hiçbir iş yapmayan basit bir sınıf tasarlayalım sağına soluna bir kaç property serpiştirelim. Ama önce ne yapalım, Help’den DefineProperties’in tanımlandığı en üst sınıf hangisi onu bir kontrol edelim.Öyle ya bu metodu ezeceğiz.Gördük ki TPersistent’te tanımlanmış tam tahmin ettiğimiz gibi.. O halde biz de TComponent kullanabiliriz rahatlıkla demekki class’ımızı miras almak için.
(more…)