Yorumları: 165
Konuları: 56
Kayıt Tarihi: 10-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 92 Başlangıç
12-06-2020, Saat: 10:55
(Son Düzenleme: 12-06-2020, Saat: 10:56, Düzenleyen: info@guzelceker.com.)
değerli arkadaşlar aşağıdaki döngü haricinde stringliste daha hızlı ekleme şansı varmı?
MyFiles := TStringList.create();
try
Dm_Foto.FD_FotoView.First ;
while not Dm_Foto.FD_FotoView.eof do
begin
myfiles.Add(Dm_Foto.FD_FotoView.FieldByName('FULLYOL').AsString);
Dm_Foto.FD_FotoView.Next;
end;
finally
MyFiles.Free;
end;
vt :firebird
Yorumları: 910
Konuları: 69
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.494 Üstad
Eğer dataset'ten tek tek çekeceksen While döngüsünü FD_FotoView.DISABLECONTROLS ve FD_FotoView.ENABLECONTROLS arasına alabilirsin.
Daha pratiği ise listeyi veritabanından virgül ile ayrışmış ve tek satırda çekebilirsin. Bunun için Firebird'de SELECT ile LIST komutunu kullanabilirsin. Delphi tarafında ise MyFiles.DelimitedText property'sine gelen veriyi doğrudan alabilirsin. ( Delimiter parametresini virgül yapmayı unutmayın )
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
Yorumları: 165
Konuları: 56
Kayıt Tarihi: 10-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 92 Başlangıç
(12-06-2020, Saat: 11:04)uparlayan Adlı Kullanıcıdan Alıntı: Eğer dataset'ten tek tek çekeceksen While döngüsünü FD_FotoView.DISABLECONTROLS ve FD_FotoView.ENABLECONTROLS arasına alabilirsin.
Daha pratiği ise listeyi veritabanından virgül ile ayrışmış ve tek satırda çekebilirsin. Bunun için Firebird'de SELECT ile LIST komutunu kullanabilirsin. Delphi tarafında ise MyFiles.DelimitedText property'sine gelen veriyi doğrudan alabilirsin. ( Delimiter parametresini virgül yapmayı unutmayın )
kayıt sayısı 9000 olan var SELECT ile LIST komutunu deniyecem anında sonuç verirmi acaba?
Yorumları: 50
Konuları: 7
Kayıt Tarihi: 13-10-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 187 Başlangıç
12-06-2020, Saat: 11:29
(Son Düzenleme: 12-06-2020, Saat: 11:33, Düzenleyen: eroniko.)
https://github.com/PacktPublishing/Delph...rformance/ burda örnekleri var, control f ile string list şeklinde aratın,
hangi yöntemin ne kadar performanslı olduğunu bulabilirsiniz.
daha detaylı bilgiler bu kitapta, herkese tavsiye ederim. çok faydalı bir kitap.
https://books.google.com.tr/books/about/...edir_esc=y
Yorumları: 1.898
Konuları: 22
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 21.184 Üstad
12-06-2020, Saat: 12:07
(Son Düzenleme: 12-06-2020, Saat: 12:10, Düzenleyen: mrmarman.)
Mevcut kayıtlar ile ne kadar süre aldığını merak ettim, bu soruyu sorduracak kadar yavaş ise sorunu veritabanı tarafından çözebilirsiniz.
Ekranda GRID var ve veritabanı buraya veri basıyorsa akışta ekranda bunu göstermek için kayıt başına bir PAINT süresi alacaktır. Bence sizin sorun burada.
@ uparlayan 'ın WHILE EOF'dan hemen önce DISABLECONTROLS ve END'den sonra da ENABLECONTROLS şeklinde arasına alma fikrini mutlaka değerlendirin. Başka bir şeye ihtiyacınız kalmayacaktır.
NOT : Bir de aktif Grid'e bağlı FDQuery kullanmaktansa sadece bu işler için ve sadece dilediğiniz sayıda kayıt ve field çeken servis Query nesneniz olsun. Bunu dinamik/anonim olarak da lazım olduğunda CREATE edip try / finally ile oracıkta FREE edebilirsiniz.
Ekleme: PATH konusunda sürekli yinelenen kayıtları GROUP BY veya DISTINCT ile de sadeleştirip, 9000 kaydı 100-200 taneye de indirebilir performansı tavan yaptırabilirsiniz.
Saygılarımla
Muharrem ARMAN
Yorumları: 165
Konuları: 56
Kayıt Tarihi: 10-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 92 Başlangıç
12-06-2020, Saat: 12:14
(Son Düzenleme: 12-06-2020, Saat: 12:18, Düzenleyen: info@guzelceker.com.)
MyFiles := TStringList.create();
MyFiles.Delimiter:=(',');
try
myfiles.Text:=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
Form_AnaSayfa.Image.FillFromList( MyFiles);
finally
MyFiles.Free;
end;
parametre hatalı diyor neyi yanlış yapıyorum
(12-06-2020, Saat: 12:07)mrmarman Adlı Kullanıcıdan Alıntı: Mevcut kayıtlar ile ne kadar süre aldığını merak ettim, bu soruyu sorduracak kadar yavaş ise sorunu veritabanı tarafından çözebilirsiniz.
Ekranda GRID var ve veritabanı buraya veri basıyorsa akışta ekranda bunu göstermek için kayıt başına bir PAINT süresi alacaktır. Bence sizin sorun burada.
@uparlayan 'ın WHILE EOF'dan hemen önce DISABLECONTROLS ve END'den sonra da ENABLECONTROLS şeklinde arasına alma fikrini mutlaka değerlendirin. Başka bir şeye ihtiyacınız kalmayacaktır.
NOT : Bir de aktif Grid'e bağlı FDQuery kullanmaktansa sadece bu işler için ve sadece dilediğiniz sayıda kayıt ve field çeken servis Query nesneniz olsun. Bunu dinamik/anonim olarak da lazım olduğunda CREATE edip try / finally ile oracıkta FREE edebilirsiniz. 
Ekleme: PATH konusunda sürekli yinelenen kayıtları GROUP BY veya DISTINCT ile de sadeleştirip, 9000 kaydı 100-200 taneye de indirebilir performansı tavan yaptırabilirsiniz.
bazen mutluluğa giden yolda kalbim hızlı atmaya başlıyor korkuyorum... haklısınız bende 50 kayıt için denedim..normaldi.. 9000 kayıtta yavaşlar diye düşünmüştüm
Yorumları: 910
Konuları: 69
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.494 Üstad
12-06-2020, Saat: 12:30
(Son Düzenleme: 12-06-2020, Saat: 12:32, Düzenleyen: uparlayan.)
SELECT Cümlenizi paylaşırmısınız.
+
myfiles.Text :=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
değil,
myfiles.DelimitedText := (Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
Yorumları: 165
Konuları: 56
Kayıt Tarihi: 10-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 92 Başlangıç
12-06-2020, Saat: 12:31
(Son Düzenleme: 12-06-2020, Saat: 12:34, Düzenleyen: info@guzelceker.com.)
(12-06-2020, Saat: 12:30)uparlayan Adlı Kullanıcıdan Alıntı: SELECT Cümlenizi paylaşırmısınız.
select ARSIVNO,LIST(FULLYOL) AS FULLYOL from FOTOLAR GROUP BY ARSIVNO ORDER BY ARSIVNO ASC
Form_AnaSayfa.ImageEnMView1.LockUpdate;
MyFiles := TStringList.create();
MyFiles.Delimiter:=(',');
try
myfiles.DelimitedText:=(Dm_Foto.FD_FotoThum.FieldByName('FULLYOL').AsString);
Form_AnaSayfa.ImageEnMView1.Clear();
Form_AnaSayfa.ImageEnMView1.FillFromList( MyFiles,'',true);
finally
MyFiles.Free;
Form_AnaSayfa.ImageEnMView1.unLockUpdate;
end;
bu şekildede olmadı
Yorumları: 910
Konuları: 69
Kayıt Tarihi: 30-06-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 8.494 Üstad
Hata mesajı tam olarak nedir, paylaşır mısınız?
YouTube Delphi Tips
"Mantıklı adam kendini dünyaya uyarlar; mantıksız adam ise dünyayı kendine uydurmakta inat eder. Bu nedenle, tüm ilerleme o inatçı adama bağlıdır." - George Bernard Shaw
Yorumları: 165
Konuları: 56
Kayıt Tarihi: 10-10-2019
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 92 Başlangıç
12-06-2020, Saat: 12:45
(Son Düzenleme: 12-06-2020, Saat: 12:49, Düzenleyen: info@guzelceker.com.)
select ARSIVNO,LIST(FULLYOL) AS FULLYOL from FOTOLAR GROUP BY ARSIVNO ORDER BY ARSIVNO ASC
şimdi dikkatimi çekti
fullyol (path) aslında aradaki boşluklarada virgül atmış LIST ek fonksiyonları mı var acaba
D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0050.JPG,D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0051.JPG,D:\DENEME\0000000005-MRAT,ÖZYURT,KARABACAK\0000000005-GN-0052.JPG
MRAT,ÖZYURT,KARABACAK
|