Bileşen oluşturulmuşmu?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
seandillon
Üye
Mesajlar: 50
Kayıt: 04 Nis 2006 11:14
Konum: istanbul
İletişim:

Bileşen oluşturulmuşmu?

Mesaj gönderen seandillon »

Programın bir yerinde bitmap adın da bir resim dosyası oluşturuyorum.
Bazı yerlerde bu dosyanın FreeAndNil ile boşaltıyorum. Fakat bu bitmap isimli bileşenin oluşturulup oluşturulmadığını nasıl anlayabilirim, eğer oluşmadan FreeAndNil uyguluyorsam ne olur?
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3077
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen sabanakman »

Onu nasıl oluşturduğuna bağlı olarak değişir. Eğer Create ederken owner parametresine o bileşene sahip bir form ya da bileşen belirtirseniz çok sorun yaşamazsınız. Bileşenler sahipleri yok edilirken otomatik olarak yok edilirler ama nil parametresi ile boş geçerseniz onu muhakkak siz yok etmelisiniz ve arayıp bulamayacağınız için bir dizi de takip etmelisiniz. Free veya FreeAndNil nesne varsa yok eder ama olmayan nesne için bunu çalıştırırsanız herhangi bir sorun da çıkarmadan es geçer. Çünkü bu metot destroy isimli yok edici metodu arar varsa çalıştırır yoksa hiç bir şey yapmaz. Eğer bir form altında oluşturuyorsanız bu nesneleri (.Create(Form2);)

Kod: Tümünü seç

Form2.FindComponent('isim');
şeklinde arayabilirsiniz. Burada dikkat edilmesi gereken nokta bileşen yok edilmişse bu gibi aramalardan sonuç dönmeyecek olmasıdır.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen ikra »

eger ki olusturulmamissa ve sen freeandnil kullaniyorsan hic bir sey olmaz. cünkü freeandnil komutu önce bilesen var mi bakar sonra varsa free eder...
aksi taktirde her hangi bir except vermez. (en azindan ben öyle biliyorum)
kıdemsiz üye
Kullanıcı avatarı
seandillon
Üye
Mesajlar: 50
Kayıt: 04 Nis 2006 11:14
Konum: istanbul
İletişim:

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen seandillon »

Şimdi Sorun şurada bir adet TBitmap tarzında bir tanımlamamız var

...
var
bitmp : TBitmap;
begin
FreeAndNil(Bitmp);
...
yapıyorum. dediğiniz gibi sanki yoksa bir sorun yok gibi davranıyor ama aslında başka yerlerde birşeyler kayboluyor. Çünkü bu işlemi yaptıktan sonra eğer bu bitmp create edilmediyse sistem bir yerde geliyor EAccess Violation hatası veriyor, ama bu işlemi iptal ettiğimde bu sorun kesinlikle olmuyor.
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen Battosai »

FreeAndNil(Bitmp);
Bu komutu oluşturduğun bitmap ile işin bitince kullanacaksın... yani doğru planlama yapman lazım.
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen unicorn64 »

@ Battosai ye katılıyorum, kurgunuzu yeniden gözden geçirin...

ayrıca

Kod: Tümünü seç

   if Assigned(bitmap) then
      freeandnil(bitmap);  

bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
RamazanG
Üye
Mesajlar: 73
Kayıt: 16 Tem 2010 03:38

Re: Bileşen oluşturulmuşmu?

Mesaj gönderen RamazanG »

Olmayan bir Image için FreeAndNil(obje); yaparsanız "Invalid Pointer" hatası alma ihtimaliniz var
Cevapla