Bazı kodlarla açıklayayım.
Kod: Tümünü seç
...
// 1. seçenecek create yapıldı
grafik1:=Timage.Create;
// 2. secenek nil ile sıfırlandı
grafik1:=nil;
// 3. secenek
// grafik1 ile hiçbir işlem yapılmadı
if assigned(grafik1) then
1. secenek assigned true döndürecektir.
2. secenek assigned false döndürecektir.
3. secenek assigned true döndürecek, ama grafik1 create ile oluşturulmadıgı için rasgele bir adres barındıracaktır. Sonucta grafik1.show veya herhangi bir grafik1 degişkeni kullanılmak istendiginde access violation hatasıyla karşılaşılacaktır.
Assigned hafızada bir adresi gösteren değişkenin nil ( 0) değerine sahip olup, olmadıgına bakar. Eger değişkeni nil ile sıfırlamadıysan, mutlaka rasgele bir deger sahip olacaktır.
Delphi değişkenlerin içerigine dokunmaz. Grafik1 gibi hafızadaki nesneyi gösteren değişkenler, rasgele degerlere sahip olacaktır. Bu nedenle kullanılan değişkenler ilk değerlerine atanmalıdır. Nil veya create gibi işlemlerle değişkenler anlamlı değerlere sahip olmalıdır.
Benzeri bir örnegi şu şekilde de düşünebilrsin.
Kod: Tümünü seç
var
b1 : boolean;
begin
// 1. secenek
b1:=true;
// 2. secenek
b1:=false;
// 3. secenek
// b1 e deger atanmadı
if b1 then showmessage(...
1. secenege göre showmessage çalışacaktır.
2. secenege göre showmessage çalışmayacaktır.
3. seçenege göre showmessage bazen çalışacak, bazen çalışmayacaktır.