TDbGrid Hafıza Sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

TDbGrid Hafıza Sorunu

Mesaj gönderen vkamadan »

Merhaba ,
bir projemde bir TDbGrid e bağlı dataset i sürekli açıp kapatarak refresh ediyorum, fakat datasetteki kayıt sayısı 200 lerde olduğu zaman refresh işlemi çok yavaşıyor ve sonunda program kiltleniyor. öğrenmek istediğim DBGrid her yeniden çizlişinde eski görüntüsü hafızadan kalıcı olarak temiz bir şekilde atılıyormu ? eğer atılmıyorsa hafızada ciddi bir şişme oluyor demektir, biz bu temizleme olayını nasıl yaparız.

Not: Grid in , Dataset in ve datasource ün her hangi bir olay metodu aktif değil.
Volkan KAMADAN
www.polisoft.com.tr
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

hocam kolay gelsin ...
dataseti kapatıp açmadan önce disablecontrols ve enablecontrols metodlarını kullanıyormusun veya acaba kullansan nasıl olur....Birde buna benzer bişey benimde başıma gelmişti ama ben kapatıp açtığım datasete autocreate olan başka formlarda data kontrol lerde bağlamışım.o formları runtime da create edince problem düzeldi..
iyi çalışmalar
Ali Erdoğan
Kıdemli Üye
Mesajlar: 1026
Kayıt: 11 Şub 2005 02:12
Konum: İstanbul

Mesaj gönderen Ali Erdoğan »

Sorunun gridden kaynaklandığına emin misin? Birde grid i kaldırıp 200 den fazla bulunan tabloyu refresh et. Birde veri erişim bileşeni olarak ne kullanıyorsun?
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba ,
erişim componentleri standart BDE bileşenleri, sorunu LIMIT fonksiyonuyla çözdüm gibi testlerini yapıyorum şu sıralar.
teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Onun paint ile ilgisi yoktur Volkan. Ekranda boyananlar DoubleBuffered değilse sadece VideoMemory'de yer kaplar.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Bir de onPaint ve bunun gibi yoğun çalışan routinlerde vs. asla ve asla nesne tanımlama ve create işlemeri ile Application.Processmessages gibi nefes aldırıcı komutlar kullanmayın. Varsa global değişkene dönüştürün, processmessages'leri kaldırın.. Resim
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhaba ,
limit le çözdüğümü sanmıştım fakat ;
MySQL front ara yüzüyle çalıştırabildiğim LIMIt komutu query de kullandığımda çalışmıyor örneğin en basit ,
select *from test limit 0,10 deiğimde mysql fornt bana 10 kayıt gösterirken query de kullandığımda

Kod: Tümünü seç

Invalid use of keyword, Token: LIMIt
hatası alıyorum standar BDE bileşenleriyle erişiyorum.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Kod: Tümünü seç

Select Top 10 * from Tablo
şeklinde denerseniz limitten anladığım sonucu elde edersiniz..
Resim
Resim ....Resim
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

@mrmcop ,
maalesef belirttiğiniz komut işe yaramadı , ne MySQL Frontta çalışıyor nede Delphi ortamında.
yani çok ilginç bir durum var , dinamik bir SQL üretiyorum içinde limitte geçiyor bunu bir dosyay kaydediyorum MySQL Frontta çalıştırıyorum çalışıyor fakat Delphideeçalışmıyor LIMIT anahtar kelimesini tanımıyor bu BDE denmi kaynaklanıyor acaba.
Volkan KAMADAN
www.polisoft.com.tr
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
standart bde bileşenleri mysql e özgü sql leri tanımayabilir.
mysql için özel bileşenleri (ör. zeos) deneyebilirmisiniz onlardada aynı durum söz konusumu?
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Volkan şöyle yapsan

Verilerine istediğin bileşen (BDE, ADO, dbExpress vs.) bağlan. Bir ClientDataset ve bir Datasetprovider ile buna bağlan. ClientDataset'in PacketRecords özelliği ile istediğin sayıda kaydın fetch edilmesini sağlarsın. 2 dersen bağlantıda 2 paket çekecektir. 5 dersen 5 vs.. Bu şekilde bir limit koyabilirsin sanırım.

Ancak DBGrid hepsini fetch etmeye kalkarsa olmaz.. Hmm.. Düşünelim gene.

Gerçi emin değilim. Yiyebilir de bu çözüm.
Cevapla