01-02-2018, Saat: 13:01
Ayrıca ek olarak belirtmek isterim ki; FreeAndNil kullanmış olmanıza rağmen; her zaman ama her zaman Assigned ile kontol yapın. Neden ?
Aşağıdaki örneği çalıştırın:
Ekranda ne görüyorsunuz ? İki aynı ShowMessage değil mi ! Şaşırdınız mı ?
Şaşırmanıza gerek yok. Nesne instance'ı nil dahi olsa ilgili metod çağrımı gerçekleştirilir ve ilgili metod içinde o nesnenin hafıza alanına müracaat eden hiç bir şey yok ise; bu durumda ilgili metod %100 işletilir. Örneğimizde olduğu gibi. Ancak örneği azıcık değiştirip yeniden deneme yaapalım. Buyrun:
Peki şimdi ne görüyorsunuz ?
Umarım gördükleriniz, FreeAndNil ve Assigned kullanımlarının ehemmiyetini size anlatmama vesile olmuştur.
Aşağıdaki örneği çalıştırın:
TTest = class
public
procedure Deneme;
end;
{ TTest }
procedure TTest.Deneme;
begin
ShowMessage('Merhaba bu bir deneme mesajıdır');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
T : TTest;
begin
T := TTest.Create;
T.Deneme;
FreeAndNil(T);
T.Deneme;
end;
Ekranda ne görüyorsunuz ? İki aynı ShowMessage değil mi ! Şaşırdınız mı ?
Şaşırmanıza gerek yok. Nesne instance'ı nil dahi olsa ilgili metod çağrımı gerçekleştirilir ve ilgili metod içinde o nesnenin hafıza alanına müracaat eden hiç bir şey yok ise; bu durumda ilgili metod %100 işletilir. Örneğimizde olduğu gibi. Ancak örneği azıcık değiştirip yeniden deneme yaapalım. Buyrun:
TTest = class
public
procedure Deneme;
end;
{ TTest }
procedure TTest.Deneme;
begin
ShowMessage('Merhaba bu bir deneme mesajıdır.Şimdi ilgili nesneye ait hazıfa bloğundan bir şeyler kullanacağız:' + Self.ClassName);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
T : TTest;
begin
T := TTest.Create;
T.Deneme;
FreeAndNil(T);
T.Deneme;
end;
Peki şimdi ne görüyorsunuz ?
Umarım gördükleriniz, FreeAndNil ve Assigned kullanımlarının ehemmiyetini size anlatmama vesile olmuştur.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...

