Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
TListView kayıt yükleme hk.
#1
Merhabalar,

Mobil platform ile ilgili testlere devam ediyorum ve bazı problemler ile karşılaşıyorum.

UNIDAC bağlantı kütüphanesi ile direk olarak uzak sunucuya bağlanabiliyoruz. 
  • Uzak MSSQL Servera bağlantı yapıyorum.
  • 100 Satır 4 kolon bilgi çekiyorum.
  • Listview ile dataset birbirine LiveBinding ile bağlıyorum.
  • FetchAll özelliği kapalı.
 olacak şekilde ayarladım. 

Şimdi ilk problem kayıt çekerken bir "Bekleme" ekranı göstermek istiyorum fakat işlem main thread içinde gerçekleştiği için bekleme ekranı görünmüyor.
Ben de ilk olarak TThread ile CreateAnonymousThread metodunu kullanarak denedim bekleme ekranında problem kalmıyor. Kayıtlarda çok güzel geliyor fakat bu sefer de TListview kafasına göre işler yapmaya başlıyor Big Grin  Tüm liste geliyor bazen sadece tek bir kayıt gösteriyor bazen ise tüm kayıtlar geliyor ama bir tane Fieldın verisi boş geliyor.. 

Belki Thread saçmalıyordur dedim ve ITask denedim onda da aynı problem var. 

TRestRequest de olduğu gibi ExecuteAsync gibi bir method u nasıl kullanara bilirim? 

Dipçe;
 ListView.beginUpdate - EndUpdate i de denedim.
 Dataset lerde DisableControls ve EnableControls de kullandım. 

Geliştirme ve Test Ortamı
Delphi Tokyo
Samsung J7 Prime - Android 6.0


Teşekkürler. 
İyi çalışmalar.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#2
(31-07-2017, Saat: 10:43)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar,

Mobil platform ile ilgili testlere devam ediyorum ve bazı problemler ile karşılaşıyorum.

UNIDAC bağlantı kütüphanesi ile direk olarak uzak sunucuya bağlanabiliyoruz. 
  • Uzak MSSQL Servera bağlantı yapıyorum.
  • 100 Satır 4 kolon bilgi çekiyorum.
  • Listview ile dataset birbirine LiveBinding ile bağlıyorum.
  • FetchAll özelliği kapalı.
 olacak şekilde ayarladım. 

Şimdi ilk problem kayıt çekerken bir "Bekleme" ekranı göstermek istiyorum fakat işlem main thread içinde gerçekleştiği için bekleme ekranı görünmüyor.
Ben de ilk olarak TThread ile CreateAnonymousThread metodunu kullanarak denedim bekleme ekranında problem kalmıyor. Kayıtlarda çok güzel geliyor fakat bu sefer de TListview kafasına göre işler yapmaya başlıyor Big Grin  Tüm liste geliyor bazen sadece tek bir kayıt gösteriyor bazen ise tüm kayıtlar geliyor ama bir tane Fieldın verisi boş geliyor.. 

Belki Thread saçmalıyordur dedim ve ITask denedim onda da aynı problem var. 

TRestRequest de olduğu gibi ExecuteAsync gibi bir method u nasıl kullanara bilirim? 

Dipçe;
 ListView.beginUpdate - EndUpdate i de denedim.
 Dataset lerde DisableControls ve EnableControls de kullandım. 

Geliştirme ve Test Ortamı
Delphi Tokyo
Samsung J7 Prime - Android 6.0


Teşekkürler. 
İyi çalışmalar.

LiveBindings arkaplanda nasıl bir doldurma işlemi yapıyor incelemedim, bilmiyorum ama; Listview'e thread içinde kendiniz doldurma işlemi yaparken; TThread.Queue metodu ile doldurma işlemini deneyebilir misiniz ;-)
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#3
(31-07-2017, Saat: 11:05)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(31-07-2017, Saat: 10:43)barutali Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhabalar,

Mobil platform ile ilgili testlere devam ediyorum ve bazı problemler ile karşılaşıyorum.

UNIDAC bağlantı kütüphanesi ile direk olarak uzak sunucuya bağlanabiliyoruz. 
  • Uzak MSSQL Servera bağlantı yapıyorum.
  • 100 Satır 4 kolon bilgi çekiyorum.
  • Listview ile dataset birbirine LiveBinding ile bağlıyorum.
  • FetchAll özelliği kapalı.
 olacak şekilde ayarladım. 

Şimdi ilk problem kayıt çekerken bir "Bekleme" ekranı göstermek istiyorum fakat işlem main thread içinde gerçekleştiği için bekleme ekranı görünmüyor.
Ben de ilk olarak TThread ile CreateAnonymousThread metodunu kullanarak denedim bekleme ekranında problem kalmıyor. Kayıtlarda çok güzel geliyor fakat bu sefer de TListview kafasına göre işler yapmaya başlıyor Big Grin  Tüm liste geliyor bazen sadece tek bir kayıt gösteriyor bazen ise tüm kayıtlar geliyor ama bir tane Fieldın verisi boş geliyor.. 

Belki Thread saçmalıyordur dedim ve ITask denedim onda da aynı problem var. 

TRestRequest de olduğu gibi ExecuteAsync gibi bir method u nasıl kullanara bilirim? 

Dipçe;
 ListView.beginUpdate - EndUpdate i de denedim.
 Dataset lerde DisableControls ve EnableControls de kullandım. 

Geliştirme ve Test Ortamı
Delphi Tokyo
Samsung J7 Prime - Android 6.0


Teşekkürler. 
İyi çalışmalar.

LiveBindings arkaplanda nasıl bir doldurma işlemi yapıyor incelemedim, bilmiyorum ama; Listview'e thread içinde kendiniz doldurma işlemi yaparken; TThread.Queue metodu ile doldurma işlemini deneyebilir misiniz ;-)


 Cevabınız için teşekkür ederim hocam. 
Yükleme ekranını gösteriyor ama TAniIndicator donuyor. Neyse buna da şükür.. İlerleyen zamanlarda bunun üstüne gideceğim.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#4
Merhaba,

Bir şey dikkatimi çekti, ama ne @barutali ne de Tuğrul Bey bundan bahsetmiş. Acaba ben mi gözden kaçırdım, çünkü LiveBinding'ler bildiğim kadarıyla thread safe değil. Zaten UI ile ilgili olduğu için thread safe olması kolay değil. @barutali'nin bahsettiği sorunlar da tam anlamıyla thread safe hataları.

Benim tavsiyem çok basit:
1. Live Binding kullanmayı bırakın Smile
2. Veriler geldikçe thread içinde syncronize ile listview'e ekleme yapın.

İyi çalışmalar

NOT: Livebinding ve mobil işletim sistemlerinde veri tabanına direkt bağlantı kurmak bana biraz işin kolayına kaçmak gibi geldi. Ne zaman işin kolayına kaçmaya kalksam @barutali'nin karşılaştığı bin tane gereksiz sorunla uğraştım. Şimdi tavsiyeleri okuyunca da "biz de biliyoruz, ama üşendik işte" diye geçirdim içimden Smile Umarım @barutali üşendiğinden bu sorunlarla boğuşmuyordur Smile
Cevapla
#5
(01-08-2017, Saat: 16:54)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Bir şey dikkatimi çekti, ama ne @barutali ne de Tuğrul Bey bundan bahsetmiş. Acaba ben mi gözden kaçırdım, çünkü LiveBinding'ler bildiğim kadarıyla thread safe değil. Zaten UI ile ilgili olduğu için thread safe olması kolay değil. @barutali'nin bahsettiği sorunlar da tam anlamıyla thread safe hataları.

Benim tavsiyem çok basit:
1. Live Binding kullanmayı bırakın Smile
2. Veriler geldikçe thread içinde syncronize ile listview'e ekleme yapın.

İyi çalışmalar

NOT: Livebinding ve mobil işletim sistemlerinde veri tabanına direkt bağlantı kurmak bana biraz işin kolayına kaçmak gibi geldi. Ne zaman işin kolayına kaçmaya kalksam @barutali'nin karşılaştığı bin tane gereksiz sorunla uğraştım. Şimdi tavsiyeleri okuyunca da "biz de biliyoruz, ama üşendik işte" diye geçirdim içimden Smile Umarım @barutali üşendiğinden bu sorunlarla boğuşmuyordur Smile


 Veritabanı benim değil hocam. Kullanacak kişilerde 1433 nolu portu açmakta sıkıntı duymayıp. Benim REST için port açın dediğimde "hedee hödö" dedikleri için bunlarla boğuşuyorum. Şuan asıl projeye açıkçası geçmedim. İlk testlerimi alıyorum. TListview nesnesini elle doldurma yoluna da gittim Big Grin Fakat TListItem üzerinde ki nesnelerine FindObjectT ile erişilmesi inanılmaz bir performans düşüşüne sebep oldu.
Bu şekilde en temel kısımlarda bile yaşanılan sıkıntılardan sonra REST için baskı yapmayı planlıyorum.  Big Grin TRestRequest de bulunan ExecuteAsync metodu tam istediğim işi yapıyor.
Amatör Küme Bilgisayar Programcısı
WWW
Cevapla
#6
(01-08-2017, Saat: 16:54)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Bir şey dikkatimi çekti, ama ne @barutali ne de Tuğrul Bey bundan bahsetmiş. Acaba ben mi gözden kaçırdım, çünkü LiveBinding'ler bildiğim kadarıyla thread safe değil. Zaten UI ile ilgili olduğu için thread safe olması kolay değil. @barutali'nin bahsettiği sorunlar da tam anlamıyla thread safe hataları.

Benim tavsiyem çok basit:
1. Live Binding kullanmayı bırakın Smile
2. Veriler geldikçe thread içinde syncronize ile listview'e ekleme yapın.

İyi çalışmalar

NOT: Livebinding ve mobil işletim sistemlerinde veri tabanına direkt bağlantı kurmak bana biraz işin kolayına kaçmak gibi geldi. Ne zaman işin kolayına kaçmaya kalksam @barutali'nin karşılaştığı bin tane gereksiz sorunla uğraştım. Şimdi tavsiyeleri okuyunca da "biz de biliyoruz, ama üşendik işte" diye geçirdim içimden Smile Umarım @barutali üşendiğinden bu sorunlarla boğuşmuyordur Smile

Bakın ne yazmışım Bahadır Bey;

Alıntı:LiveBindings arkaplanda nasıl bir doldurma işlemi yapıyor incelemedim, bilmiyorum ama; Listview'e thread içinde kendiniz doldurma işlemi yaparken; TThread.Queue metodu ile doldurma işlemini deneyebilir misiniz ;-)


  Yani Listview'i doldurma işlemini kendiniz yapın ve bir thread içinde yapın. Thread içinde yapacağınız için de VCL nesnelerine erişim sırasında güvenli olsun diye TThread.Queue metodunu kullanın demişim ;-) Kısaca, uygulamanın ana thread'i kilitlenmesin diye bir başka thread create edin, o thread içinde datayı nereden alıyorsanız oradan temin edin, döngüye girin ve TThread.Queue ile ana thread üzerinde ekleme işlemi gerçekleştirin.
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#7
(01-08-2017, Saat: 18:07)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(01-08-2017, Saat: 16:54)Bahadir.Alkac Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,

Bir şey dikkatimi çekti, ama ne @barutali ne de Tuğrul Bey bundan bahsetmiş. Acaba ben mi gözden kaçırdım, çünkü LiveBinding'ler bildiğim kadarıyla thread safe değil. Zaten UI ile ilgili olduğu için thread safe olması kolay değil. @barutali'nin bahsettiği sorunlar da tam anlamıyla thread safe hataları.

Benim tavsiyem çok basit:
1. Live Binding kullanmayı bırakın Smile
2. Veriler geldikçe thread içinde syncronize ile listview'e ekleme yapın.

İyi çalışmalar

NOT: Livebinding ve mobil işletim sistemlerinde veri tabanına direkt bağlantı kurmak bana biraz işin kolayına kaçmak gibi geldi. Ne zaman işin kolayına kaçmaya kalksam @barutali'nin karşılaştığı bin tane gereksiz sorunla uğraştım. Şimdi tavsiyeleri okuyunca da "biz de biliyoruz, ama üşendik işte" diye geçirdim içimden Smile Umarım @barutali üşendiğinden bu sorunlarla boğuşmuyordur Smile

Bakın ne yazmışım Bahadır Bey;

Alıntı:LiveBindings arkaplanda nasıl bir doldurma işlemi yapıyor incelemedim, bilmiyorum ama; Listview'e thread içinde kendiniz doldurma işlemi yaparken; TThread.Queue metodu ile doldurma işlemini deneyebilir misiniz ;-)


  Yani Listview'i doldurma işlemini kendiniz yapın ve bir thread içinde yapın. Thread içinde yapacağınız için de VCL nesnelerine erişim sırasında güvenli olsun diye TThread.Queue metodunu kullanın demişim ;-) Kısaca, uygulamanın ana thread'i kilitlenmesin diye bir başka thread create edin, o thread içinde datayı nereden alıyorsanız oradan temin edin, döngüye girin ve TThread.Queue ile ana thread üzerinde ekleme işlemi gerçekleştirin.

Şu durumda gözden kaçırmışım Smile
Cevapla
#8
hocam mobilde bekleme ekranı olarak bu rus arkadaşın fgx componentini kullanıyorum. androidde de ios da da çok güzel sonuçlar aldım..
Component: fgActivityDialog

işlem başıda:
fgActivityDialog.Show;
fgActivityDialog.Message := 'Sunucuya Bağlanılıyor..';

Sonunda :
fgActivityDialog.Hide.






Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
WWW
Cevapla
#9
güzel bir Component muş
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Mobile otomatik kayıt işlemi için neyi kullanabilirim? hakanharbeli 2 30 2 saat önce
Son Yorum: hakanharbeli
  video yükleme ybelen 2 197 30-03-2018, Saat: 10:50
Son Yorum: ybelen
Question başka APK dosyasının üzerine yükleme sorunu BY-HAYALET 7 270 26-01-2018, Saat: 13:15
Son Yorum: BY-HAYALET
  apple tablet uygulama yükleme erdogan 5 431 24-11-2017, Saat: 19:53
Son Yorum: Fesih ARSLAN
  iOS Uygulama Markete Yükleme Hatası beklentili 5 518 21-06-2017, Saat: 11:11
Son Yorum: hassur



Konuyu Okuyanlar: 1 Ziyaretçi