Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TObjectList Kullanımı Hk (Çözüldü)
#11
(23-06-2017, Saat: 14:14)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.TObjectList<T> generic sınıfının constructor'unda default OwnObjects parametresi true'dur. Bu parametre, TObjectList<T>'in içindeki nesnelerin Free edilmesi işleminin TObjectList<T>'in kendisi tarafından yönetileceği anlamını taşır.

Eğer siz TObjectList<T>'in içine attığınız nesneleri manuel olarak Free etmek istiyorsanız bu durumda constructor'unu false ile çağırmalısınız. (Ancak bu tarz bir istekte de TObjectList<T> kullanmak pek mantıklı olmaz, bunun yerine TList<T> daha makul bir çözüm olur)

Ayrıca gördüğüm kadarı ile Free ettiğiniz bir nesne, hâla listenin bir elemanı olarak bulunuyor. Bu durumda siz TObjectList<T>'yi OwnObjects = true olarak create ettiğiniz için, TObjectList<T> destroy olmadan önce, liste içindeki itemlerini Free etmeye çalışacak ve daha önce Free edilmiş bir nesneye ait olan hafıza bloğu üzerinde bir erişim sağlamaya çalışacak ve çok büyük ihtimalle Access Violation hatasına neden olacaktır.

Kısaca, sizin kullanımınızda Free ettiğiniz nesneyi listeden de çıkartmak zorundasınız.



Şimdi oldu işte.  Cool
Teşekkürler.

(23-06-2017, Saat: 14:18)edo Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.TObjectList Create sırasında default değeri True olan bir parametre alır. Bu parametrenin değerinin True olması ObjectList free edildiğinde ObjectList'e eklediğiniz objeclerin de Free edileceğini belirtir.  Dolayısıyla bu durumda eklediğiniz nesnelerin Free edilmesine gerek yoktur (hatta sanırım etmemelisiniz) ObjectList.Free eklediğiniz objeleri Free edecektir. Ya da bu değeri TObjectList<bıdıbıdı>.Create(False) şeklinde yaparsanız objelerini ve ObjectList'inizi ayrı ayrı Free etmeniz gerekir.

var
  AObjectList: TObjectList<TComponent>;
begin
  AObjectList := TObjectList<TComponent>.Create();
  try
     AObjectList.Add(Button1);
     AObjectList.Add(Button2);
  finally
     AObjectList.Free;
  end;
end;

Teşekkürler ayrı ayrı free edebilmek istiyordum, Free ettiğimde ObjectList'ten kendisi silinmiş olur kanısına vardığım için yanıldım.
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxscheduler bileşen kullanımı KUNTAY 2 159 04-10-2019, Saat: 08:36
Son Yorum: elixir84
  [ÇÖZÜLDÜ] Rapor Baskısında 0 değerleri yazılmasın wiseman 2 115 01-10-2019, Saat: 18:04
Son Yorum: wiseman
  [ÇÖZÜLDÜ] fast report dil hatası wiseman 6 236 25-09-2019, Saat: 14:29
Son Yorum: wiseman
  Fdmemtable kullanimi arsl01 8 557 11-09-2019, Saat: 01:32
Son Yorum: Aktolgali
  ÇÖZÜLDÜ-timer kullanmadan saat kontrolü mümkünmü? sadikacar60 3 212 10-09-2019, Saat: 22:19
Son Yorum: sadettinpolat



Konuyu Okuyanlar: 1 Ziyaretçi