‘Hacking’ Etiket Arşivi

Protected özellikleri Hack’leyelim ;)

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

Delphi sınıflarının benden çekeceği var :) Ne yapsalar nasıl saklasalar değişkenleri bir şekilde ulaşıyoruz. :) Private özellikleri değiştirme yönteminden sonra daha değişik bir konu olan protected özelliklere ulaşmayı anlatacağım bu makalemde..

Delphi’de en yaygın olarak kullanılan 4 adet erişim belirleyicisi vardır.Bunlar private, protected, public, ve published‘dır. Bunların ne işe yaradıklarından detaylıca bahsetmeyeceğim.Konumuz protected. Protected bloğunda tanımlanmış olan tüm üyeler sınıfın tasarımcısı tarafından sınıf kullanıcılarından gizlenmiştir. Ancak bu sınıfı miras alan sınıflarda erişime açıktırlar. Mesela bir formumuz olsun ve üzerinde 3 adet TEdit nesnemiz olsun. Edit bileşenlerimizin hepsinin OnClick yordamını aynı yere ayarlayalım ve OnClick yordamında aktif olan kontrolün rengini kırmızı yapmak isteyelim. Hadi bakalım kodlamaya başlayalım:

procedure TForm1.Edit1Click(Sender : TObject);
var
  cControl : TWinControl;
begin
  cControl := Screen.ActiveControl;
  cControl.Color := clRed;
end;

Yukarıdaki kodu çalıştırmayı denediğimizde “Undeclared identifier:Color” diye bir hata mesajı alıyoruz. İyide bu hata da ne ki şimdi..Hemen Delphi Help’i açıyoruz ve TEdit’e bakıyoruz..Hiyerarşiye bir bakıyoruz şöyle:
(more…)

Read-Only bir property’nin değerini nasıl değiştiririm ?

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

Başlıktaki sorunun ne kadar gereksiz olduğunu düşündüğünüzü hisseder gibiyim ;) Kim sadece okuma yapılması için tasarlanmış bir property’nin değerini değiştirmek isteyebilir ki ? Zaten adı üstünde readonly. Ancak kazın ayağı pek de öyle değil. Buyurun okuyalım;

Şimdi size anlatacağım biraz tehlikeli bir duruma sebep olabilir..En azından programların yada tasarladığınız component’lerin sağlıklı çalışması açısından sıkıntılar doğurabilir. Bu açıdan şimdiden dikkatli olmakta fayda olduğu konusunda uyarmak isterim. Diyelim ki bir component tasarladık, component’imizi kullanacak arkadaşlarımız için bazı metodları ve property’leri public yaptık.Ancak değiştirilmesini istemediğimiz çok can alıcı bir özelliği de public kısmında sadece okunabilir yaptık. Ya bu değiştirilebilirse o zaman ne yaparız ? Lafla olmuyor, hemen koda geçelim:

TMyClass = class
private
	fMyString : String;
public
	constructor Create;
	property ReadOnlyProperty : String read fMyString;
end;

(more…)