Yorumları: 124
Konuları: 33
Kayıt Tarihi: 21-01-2018
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 342
Acemi
21-02-2018, Saat: 21:34
(Son Düzenleme: 21-02-2018, Saat: 21:56, Düzenleyen: TescilsizUzman.)
Merhaba sürekli yaşadığım bir sorun artık sormak zorunda hissettim. Bu sorunu genelde timer ile çözüyorum fakat yine de sağlıklı olmadığını düşünüyorum belki daha iyi bir çözüm biliyorsunuzdur. Şimdi buttonun click kısmı şu şekilde.
[Ars=delphi]procedure TForm1.Button2Click(Sender: TObject);
begin
//sinavdurumu//
ServerMethodMerhaba.CommandText:='TServerMethods1.MerhabaEchoString';
ServerMethodMerhaba.Params[0].AsString:='select soru from bilsoru where id='+char(39)+'1'+char(39);
ServerMethodMerhaba.ExecuteMethod ;
sinavdurumu:= ServerMethodMerhaba.Params[1].AsString;
//////////sinav durumu///
if sinavdurumu ='1' then
begin
siralamaLayout.Visible:=false;
YarisKazanGirisLayout.Visible:=True;
end
else
begin
showmessage('Yarışma Süresi Bitti.!');
end;
end;[/ars]
şimdi burada client serverdan sinav durumu verisini çekiyor ve çektiği veri eğer 1 ise başka bir pence açılıyor.
bazen serverda gecikme yaşanabilir. Bu sebeple ben önce sinav durumu verisi çekildikten sonra if kısmının çalışmasını istiyorum bunu nasıl yapabilirm?
Yorumları: 453
Konuları: 14
Kayıt Tarihi: 07-09-2016
Aktif Kullandığınız Delphi Sürümü:
- Delphi 10.1
- Delphi XE7
- Delphi XE2
- Delphi 7
Rep Puanı: 1.833
Programcı
Ayrıca sürekli veritabanına sormak yerine kullandığınız veritabanına ait pipe, alerts, vs. veritabanının sizin uygulamanıza haber verebileceği (beklediğiniz kayıt geldiğinde/oluştuğunda) bir yapı daha performanslı olacaktır.
Yorumları: 953
Konuları: 124
Kayıt Tarihi: 06-07-2017
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 6.375
Üstad
Merhaba,
Gerçekleştirmek istediğiniz "bütün komutlar" hakkında biraz daha bilgi verirseniz daha sağlıklı olacaktır. Cevap şıkkı butonlarından bahsetmiyorsunuz anladığım kadarıyla.
Yorumları: 1.460
Konuları: 80
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 11.868
Üstad
23-02-2018, Saat: 12:02
(Son Düzenleme: 23-02-2018, Saat: 12:03, Düzenleyen: Tuğrul HELVACI.)
(21-02-2018, Saat: 21:34)hakanharbeli Adlı Kullanıcıdan Alıntı: Merhaba sürekli yaşadığım bir sorun artık sormak zorunda hissettim. Bu sorunu genelde timer ile çözüyorum fakat yine de sağlıklı olmadığını düşünüyorum belki daha iyi bir çözüm biliyorsunuzdur. Şimdi buttonun click kısmı şu şekilde.
[Ars=delphi]procedure TForm1.Button2Click(Sender: TObject);
begin
//sinavdurumu//
ServerMethodMerhaba.CommandText:='TServerMethods1.MerhabaEchoString';
ServerMethodMerhaba.Params[0].AsString:='select soru from bilsoru where id='+char(39)+'1'+char(39);
ServerMethodMerhaba.ExecuteMethod ;
sinavdurumu:= ServerMethodMerhaba.Params[1].AsString;
//////////sinav durumu///
if sinavdurumu ='1' then
begin
siralamaLayout.Visible:=false;
YarisKazanGirisLayout.Visible:=True;
end
else
begin
showmessage('Yarışma Süresi Bitti.!');
end;
end;[/ars]
şimdi burada client serverdan sinav durumu verisini çekiyor ve çektiği veri eğer 1 ise başka bir pence açılıyor.
bazen serverda gecikme yaşanabilir. Bu sebeple ben önce sinav durumu verisi çekildikten sonra if kısmının çalışmasını istiyorum bunu nasıl yapabilirm?
Zaten paylaştığınız kod istediğinizi ifade ettiğiniz şeyi yapıyor.! Yani client, server tarafındaki bir metodun işletilmesi emrini veriyor, iş server tarafında yapılıyor, cevap client'a geliyor. Ardından uygulamanız kaldığı yerden devam ediyor ve koşul kontrol ettiğiniz kod blokları işletiliyor. Yani bütün iş beklendiği gibi
senkron bir şekilde ilerliyor. Siz ne istiyorsunuz,
asenkron olmasını mı ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
Yorumları: 1.571
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829
Üstad
(25-02-2018, Saat: 21:24)hakanharbeli Adlı Kullanıcıdan Alıntı: fakat serverdan cevap geç gelirse cevabın gelmesini beklemeden if satırını çalıştırır mı diye düşünmüştüm
Serverdaki komuta Sleep ile biraz bekleme koyup gözlemleyin bakalım ne olacak
There's no place like 127.0.0.1
Yorumları: 1.660
Konuları: 20
Kayıt Tarihi: 05-08-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 18.981
Üstad
Eğer sınav puanlama işlemi Server üzerinde adım adım değil de sonuçların tümü üzerinden yapılıyorsa VEYA Client üzerinde yapılıyorsa, sınav sorularını ilk sezonda alıp yerelde işleme tabi tutarsanız gecikme vs. sorunu yaşamadan kullanıcınızı memnun edersiniz.
En azından 3'erli 5'erli bloklar halinde soruları almak da SERVER tarafından gecikme yaşanmadan arka plan iletişim yaparak bekleme hissetmeden iş görecektir.
Hem senkron hem de asenkron karışık yani.
Özetle kullanıcı bir kaç soruya cevap vereceği sırada SERVER'dan sonraki bir kaç soru çekilebilir ve o ana kadar olan cebapların SERVE'a yöneltilmesi sağlanabilir.
Saygılarımla
Muharrem ARMAN