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.
Class Oluşurma ve Yok Etme.
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Re: Class Oluşurma ve Yok Etme.
s.a.
Class oluşturma derken iletişim kazası olmasın.
şeklinde bir class tanımladık diyelim.
bu classdan bir nesne oluşturmak için
önce nesneyi tanımlıyoruz;
nesne siz create etmeden create olmaz.
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.
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.
Class oluşturma derken iletişim kazası olmasın.
Kod: Tümünü seç
class myclass=class
.....
constructor create();
end;
bu classdan bir nesne oluşturmak için
önce nesneyi tanımlıyoruz;
Kod: Tümünü seç
asd:myclass
Kod: Tümünü seç
asd:=myclass.create;
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.
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
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Class Oluşurma ve Yok Etme.
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;