[Çözüldü]-Panel Üzerinden Toplu Nesne Free etme Sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

[Çözüldü]-Panel Üzerinden Toplu Nesne Free etme Sorunu

Mesaj gönderen xozcanx »

Merhaba;
Boş Proje açarakta denedin fakat yine sorun aynı.
Şöyleki;
Aşağıdaki kodlarda Nesneyi gizlemek istediğimde sorun yok. Tümü Gizleniyor fakat Free dediğim zaman 20 adet nesne var ise +1 atlayarak gidiyor (chkbox1,chkbox3,chkbox5 gibi) ve 10 tane nesneyi free ettikten sonra hata veriyor Hata "Argument out of range" oluşturulmamış nesne.Sebebini çözemedim nerede hata yapıyorum :?: :oops:

Kod: Tümünü seç

var
  i:Integer;
begin
  Memo1.Clear;
  for i := 0 to ComponentCount-1 do
  Begin
    if (Components[i] is TCheckBox) and (TCheckBox(Components[i]).Parent=FLowPanel1) Then
    Begin
      Memo1.Lines.Add(IntToStr(i)+':'+ TCheckBox(Components[i]).Name) ;
//      TCheckBox( Components[i]).Visible:=False;
      TCheckBox( Components[i]).Free;
    End;
  End;
end;
En son xozcanx tarafından 21 Ağu 2015 08:49 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
speed60
Üye
Mesajlar: 53
Kayıt: 07 Eki 2011 08:07

Re: Panel Üzerinden Toplu Nesne Free etme Sorunu

Mesaj gönderen speed60 »

procedure Tdm1.YokEt;
var
z:integer;
begin
//uses Controls
for z:=0 to Memo1.ControlCount-1 do
TControl(Memo1.Controls[z]).Visible:=false;
TControl(Memo1.Controls[z]).Free;

end;
böyle bir procedure oluşturup kullanırsan olur diye düşünüyorum bi deneyip bilgi verebilirmisin
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: Panel Üzerinden Toplu Nesne Free etme Sorunu

Mesaj gönderen unicorn64 »

muhtemelen nesneyi free ettiğinizde Components dizisinden çıkarıldığı için erişim sıkıntısı yaşıyorsunuz,
döngüyü

Kod: Tümünü seç

for i := ComponentCount-1  downto 0 do
şeklinde kurup dener misiniz
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
3ddark
Üye
Mesajlar: 89
Kayıt: 14 Eyl 2010 10:55
Konum: İstanbul

Re: Panel Üzerinden Toplu Nesne Free etme Sorunu

Mesaj gönderen 3ddark »

unicorn64 yazdı:muhtemelen nesneyi free ettiğinizde Components dizisinden çıkarıldığı için erişim sıkıntısı yaşıyorsunuz,
döngüyü

Kod: Tümünü seç

for i := ComponentCount-1  downto 0 do
şeklinde kurup dener misiniz
unicorn64 dediği doğru her free işleminde ComponentCount azalır. Döngüyü bu duruma göre kurmalısınız.
PostgreSQL - Delphi - Linux :!:
Kullanıcı avatarı
xozcanx
Üye
Mesajlar: 362
Kayıt: 05 Oca 2012 12:55

Re: Panel Üzerinden Toplu Nesne Free etme Sorunu

Mesaj gönderen xozcanx »

trex994 yazdı:Peki FreeAndNill olarak denermisiniz.
Bunuda denemiştim ;(
unicorn64 yazdı:muhtemelen nesneyi free ettiğinizde Components dizisinden çıkarıldığı için erişim sıkıntısı yaşıyorsunuz,
döngüyü

Kod: Tümünü seç

for i := ComponentCount-1  downto 0 do
şeklinde kurup dener misiniz
Hocam verdiğiniz bilgi için çok Teşekkürler. :bravo: Sorun çözüldü.
Nasibinde varsa, alırsın karıncadan bile ders, Nasibinde yoksa, bütün cihan önüne serilse, sana ters..
Cevapla