Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TObjectList Kullanımı Hk (Çözüldü)
#1
Selamlar.
Daha önce sormuştum benzer soru sanırım kusura bakmayın.

TObjectList Kullanımını sade bir biçimde anlatmak isteyen olursa seve seve dinlerim.

Amacım bir nesnem var birden fazla create ediyorum duruma göre ama free ederken kaçıncıyı free ediyorum bilmem gerekiyor. 
veya nesnemin özelliklerini kullanırken kaçıncı nesnemin özelliğini ayarlayabilmem gerekiyor.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
(27-04-2017, Saat: 14:59)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSelamlar.
Daha önce sormuştum benzer soru sanırım kusura bakmayın.

TObjectList Kullanımını sade bir biçimde anlatmak isteyen olursa seve seve dinlerim.

Amacım bir nesnem var birden fazla create ediyorum duruma göre ama free ederken kaçıncıyı free ediyorum bilmem gerekiyor. 
veya nesnemin özelliklerini kullanırken kaçıncı nesnemin özelliğini ayarlayabilmem gerekiyor.

Merhaba. Burada bazı örnekler var. Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#3
Ben bu konuyu bir türlü kavrayamadım ya Sad
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#4
Kafanıza takılan tam olarak nasıl birşey biraz daha açabilirmisiniz konuyu
Yeni Nesil Yazılımcı
Linkedin: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Blog adresim: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#5
(17-06-2017, Saat: 09:37)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBen bu konuyu bir türlü kavrayamadım ya Sad

Küçük bir örnek..

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Dipçe; Cevaba dosya ekleyemediğim için mega ya attım.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#6
(19-06-2017, Saat: 10:09)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(17-06-2017, Saat: 09:37)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBen bu konuyu bir türlü kavrayamadım ya Sad

Küçük bir örnek..

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Dipçe; Cevaba dosya ekleyemediğim için mega ya attım.

Örnek son derece açıklayıcı olmuş.
Satır aralarında kullanmış olduğunuz farklı tarzdaki açıklamalarınız (lehçe Smile ), kodun akılda kalıcılığını güçlendirmiş.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
(19-06-2017, Saat: 10:09)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(17-06-2017, Saat: 09:37)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlBen bu konuyu bir türlü kavrayamadım ya Sad

Küçük bir örnek..

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol

Dipçe; Cevaba dosya ekleyemediğim için mega ya attım.

Anladım teşekkürler.
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#8
Merhabalar

var
  Rdp: TMsRdpClient7NotSafeForScripting;
 TabSheet: TTabSheet;
begin
 TabSheet := TTabSheet.Create(PageControl1);
 TabSheet.Caption := Button.Caption;
 TabSheet.PageControl := PageControl1;
 try
   if ObjectList = nil then
     ObjectList := TObjectList<TMsRdpClient7NotSafeForScripting>.Create();
   Rdp := TMsRdpClient7NotSafeForScripting.Create(nil);
.
.
.
.
    Rdp.Align := alClient;
    Rdp.Connect;
    ObjectList.Add(Rdp);

TObjectListi bu şekilde kullanıyorum,

 
ObjectList.Items[PageControl1.ActivePage.TabIndex - 1].Disconnect;
ObjectList.Items[PageControl1.ActivePage.TabIndex - 1].Free;

Bağlantım kapanıyor ama Memory Leaks oluşuyor ben bu olayı kavrayamadım mı hala Sad
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#9
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.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#10
(22-06-2017, Saat: 18:00)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar

var
  Rdp: TMsRdpClient7NotSafeForScripting;
 TabSheet: TTabSheet;
begin
 TabSheet := TTabSheet.Create(PageControl1);
 TabSheet.Caption := Button.Caption;
 TabSheet.PageControl := PageControl1;
 try
   if ObjectList = nil then
     ObjectList := TObjectList<TMsRdpClient7NotSafeForScripting>.Create();
   Rdp := TMsRdpClient7NotSafeForScripting.Create(nil);
.
.
.
.
    Rdp.Align := alClient;
    Rdp.Connect;
    ObjectList.Add(Rdp);

TObjectListi bu şekilde kullanıyorum,

 
ObjectList.Items[PageControl1.ActivePage.TabIndex - 1].Disconnect;
ObjectList.Items[PageControl1.ActivePage.TabIndex - 1].Free;

Bağlantım kapanıyor ama Memory Leaks oluşuyor ben bu olayı kavrayamadım mı hala Sad

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;
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Datasnap Türkçe karakter sorunu [Çözüldü] hakanharbeli 4 111 11-02-2018, Saat: 03:29
Son Yorum: hakanharbeli
Star ıdHTTP Post hakkında? [Çözüldü] Cyber 1 85 06-02-2018, Saat: 13:36
Son Yorum: Cyber
  Form create h.k (Çözüldü ) cinarbil 12 267 25-01-2018, Saat: 12:09
Son Yorum: cinarbil
  Wsdl Xml Importer(Çözüldü) yhackup 17 222 09-01-2018, Saat: 15:42
Son Yorum: yhackup
  Unit.pas dosyaları ve Uses kullanımı nehirnnn 2 147 05-01-2018, Saat: 01:52
Son Yorum: masteryoda



Konuyu Okuyanlar: 1 Ziyaretçi