‘Pointer’ Etiket Arşivi

Absolute (votka değil!)

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

Absolute direktifi bir değişkenin kendisinden önce tanımlanmış bir başka değişken ile aynı hafıza bloğunu kullanmasını sağlar.

var
  iValue : Cardinal;
  iOther : Cardinal absolute iValue;
begin
 iValue := 250;
 ShowMessage(InttoStr(iValue) + ‘-’ + InttoStr(iOther)); // 250-250

 iOther := 555;
 ShowMessage(InttoStr(iValue) + ‘-’ + InttoStr(iOther)); // 555-555
end;

Yukarıda görüldüğü üzere iki değişken de aynı hafıza bölgesini paylaşıyorlar ve birinde yapılan değişiklik diğerine otomatikman yansıyor.Ancak absolute direktifini gösterdiği tip ile aynı tipte vermeyebilirsiniz.Şöyle ki:
(more…)

System.Object.ReferenceEquals

// 15 Mayıs 2009 // Yorum Yok » // .Net, Delphi, Programlama

Delphi tanımı:

class function ReferenceEquals (objA : System.Object; objB : System.Object) : Boolean;

C# tanımı :

public static bool ReferenceEquals (Object objA, Object objB);

Her iki sınıfa ait nesnenin aynı referansa sahip olup olmadığına yada her ikisininde nil (Null) olup olmadığına bakar.Eğer her iki nesnede aynı referansa sahip ise yada her ikisi de nil(Null) ise true aksi taktirde false döndürür. Şimdi Referans diyoruz da nedir bu referans ? Aslında buraya C++ için yapılmış olan tanımıda yazmak istiyorum müsaadenizle.

public: static bool ReferenceEquals(
Object* objA,
Object* objB
);

Bu tanımda her iki paremetrenin tipide Object* biçiminde.Yani bu paremetreler aslında Object tipini işaret eden işaretçiler(Pointer). Aslında Delphi de tanımladığımız pek çok şeyin işaretçi olması gibi bir gerçek bu.
(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…)