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?
Bileşen oluşturulmuşmu?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- seandillon
- Üye
- Mesajlar: 50
- Kayıt: 04 Nis 2006 11:14
- Konum: istanbul
- İletişim:
Bileşen oluşturulmuşmu?
Hayatta iki şey paylaşmaya değer, sevgi ve bilgi. sevgisiz bilgi, bilgisiz sevgi olmaz...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Bileşen oluşturulmuşmu?
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);)şeklinde arayabilirsiniz. Burada dikkat edilmesi gereken nokta bileşen yok edilmişse bu gibi aramalardan sonuç dönmeyecek olmasıdır.
Kod: Tümünü seç
Form2.FindComponent('isim');
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: Bileşen oluşturulmuşmu?
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)
aksi taktirde her hangi bir except vermez. (en azindan ben öyle biliyorum)
kıdemsiz üye
- seandillon
- Üye
- Mesajlar: 50
- Kayıt: 04 Nis 2006 11:14
- Konum: istanbul
- İletişim:
Re: Bileşen oluşturulmuşmu?
Ş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.
...
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...
Re: Bileşen oluşturulmuşmu?
Bu komutu oluşturduğun bitmap ile işin bitince kullanacaksın... yani doğru planlama yapman lazım.FreeAndNil(Bitmp);
Re: Bileşen oluşturulmuşmu?
@ Battosai ye katılıyorum, kurgunuzu yeniden gözden geçirin...
ayrıca
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...

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...

Re: Bileşen oluşturulmuşmu?
Olmayan bir Image için FreeAndNil(obje); yaparsanız "Invalid Pointer" hatası alma ihtimaliniz var