Class Oluşurma ve Yok Etme.

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
fearless
Üye
Mesajlar: 15
Kayıt: 26 Kas 2005 10:15

Class Oluşurma ve Yok Etme.

Mesaj gönderen fearless »

Selam Arakadaşlar

Hazırladığım bir proje için bir class oluşturum.

ilgili forma da o classı çağırarak işlem yapıyorum örneğin ; (Formun Uses kısmına ilgili Kılasın Unitini Dahil ediyorum)

ClassX.Create.islem ;

Sorum şu, İşlem bitince class otomatikman free oluyor mu? yoksa benim ilave olarak classı free etmem gerekiyor mu ?

incelediğimde free fonksiyonu yalnızca create fonksiyonundan sonra çalışıyor. yani;

ClassX.Create.Free şeklinde. o zaman da mantıksız geliyor bana, önce create edip sonra free etmek.


başka bir konu ise, örneğin klası bir formun unitine dahil ettim (tanımladım), ancak formda hiç kullanmadım diyelim. form oluşturulunca class da otomatikman oluşturuluyor mudur? yani class kullanım anında mı oluşturuluyor? yoksa unit ile tanımlandığı an mı oluşturuluyor?

bu konua bilgisi olan arkadaşlar yardım ederse (class oluşturma ve yok etme konusunda) çok sevinirim.

Kolay Gelsin İyi Çalışmalar.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Class Oluşurma ve Yok Etme.

Mesaj gönderen aslangeri »

s.a.
Class oluşturma derken iletişim kazası olmasın.

Kod: Tümünü seç

class myclass=class
.....
constructor create();
end;
şeklinde bir class tanımladık diyelim.
bu classdan bir nesne oluşturmak için
önce nesneyi tanımlıyoruz;

Kod: Tümünü seç

asd:myclass
nesne siz create etmeden create olmaz.

Kod: Tümünü seç

asd:=myclass.create;
bu kod ile hafızada myclass tipinde bir nesne oluşturup o nesnenin adresini asd isimli değişkene atıyoruz.
oluşturduğumuz nesneyi manuel free etmeniz (freeannil bunun için en iyisidir) gerekmektedir.

Kod: Tümünü seç

asd.free;
asd:=nil;
//bu iki satır yerine aşağıdaki tek satırlık kod işimizi daha iyi yapar
freeandnil(asd);
//böylelikle asd yi free etmeden önce asd nin nil olup olmadığını kontrol etmemizede gerek kalmaz.
free ettiğiniz zaman o nesnenin hafızada kapladığı alanı serbest bırakıyorsunuz.
daha sonra nesnemize nil ataması yaparak o nesnenin hafızada serbet bırakıldığını nesneyede bildiriyoruz.
umarım anlatabilmişimdir.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Ertugrul
Üye
Mesajlar: 136
Kayıt: 09 May 2009 12:05

Re: Class Oluşurma ve Yok Etme.

Mesaj gönderen Ertugrul »

Kod: Tümünü seç

//En iyi yol:
procedure button1click....
var
C:TClass;
begin
  C:=TClass.Create;
  try
    C.Isle;
  finally
    FreeAndNil(C);
  end;
end;

//2. yol, Self burada kodun kullanildigi form. self free edilince TClass de free edilir ve o ana kadar hafizada kalir. -- ONERMIYORUM --

with TClass.Create(Self) do
   Isle; 

//3. yol. Yine onermiyorum ama kullanima ornek. Burada with oldugu icin free komutu TClass i free edecektir. ama begin olmasaydi formu free ederdi. O yuzden with kullanimi biraz sakincali.

with TClass.Create(nil) do
begin
  Isle;
  Free; //ya da freeandnil(self);   burada self=TClass olmali.
end;

Cevapla