Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual Basic => Konuyu başlatan: XX_CİHAN_XX - 17 Şubat 2007, 20:59:58

Başlık: visual basic te for next dongusu
Gönderen: XX_CİHAN_XX - 17 Şubat 2007, 20:59:58
for next dongusunun ıcındeyken sureklı artan bır sayacın degerını text box a aktarmak ıcın asagıdakı satırları kullanıyorum.

text1.text = cstr(sayac)

Fakat for next dongusunde kaldıgıım surece text box ta hıc bısey gozukmuyor bu donguden cıkınca ancak yazılan en son deger text box ta gozukuyor...
Sebebı nedır acaba?
Başlık: visual basic te for next dongusu
Gönderen: armys2000 - 18 Şubat 2007, 02:07:43
dim a
sayın @ XX_CİHAN_XX

for a=1 to 100
text1.text=a
doevents
next a

bu şekilde yaz hocam yoksa text box ta anın değerini ancak döngü bittiğinde görürsün

pc de özelliklede vbasic te bir değişkeni ekranda yazdırmak işlemcide baya bir işleme sokar  işlemci döngü çalışırken diğer olayları yapmakta baya bir zorlanır hatta yapamaz bunu yaptırabilmek için DoEvents kullanılır  Diğer olaylarıda işleme al gibi birşey

doevents
Başlık: visual basic te for next dongusu
Gönderen: XX_CİHAN_XX - 19 Şubat 2007, 12:05:44
armys2000 dediğin şekilde textboxa yazı yazdırabildim.Fakat bu seferde şoyle bir durum var:
For next dongusu ıle bır gecıkme yapıyorum ve bu gecıkme her bılgısayarda aynı olmuyor.Bilgisayarın hızına gore dongu daha gec yada daha yavas dongu tamamlanıyor.Bende dongu yerıne timer kullanmak ıstedım yanlız butona tıkladıgımda yada baska bı dongunun ıcıne gırdıgımde bu tımer calısmıyor DoEvents ı burdada kullanmayı denedım ama yemedi :d
Timer li yada timersiz eşit zaman gecıkmesı nasıl yapabılırım?
Yardımlarınız için teşekkürler...
Başlık: visual basic te for next dongusu
Gönderen: XX_CİHAN_XX - 19 Şubat 2007, 12:08:46
armys2000 dediğin şekilde textboxa yazı yazdırabildim.Fakat bu seferde şoyle bir durum var:
For next dongusu ıle bır gecıkme yapıyorum ve bu gecıkme her bılgısayarda aynı olmuyor.Bilgisayarın hızına gore dongu daha gec yada daha yavas dongu tamamlanıyor.Bende dongu yerıne timer kullanmak ıstedım yanlız butona tıkladıgımda yada baska bı dongunun ıcıne gırdıgımde bu tımer calısmıyor DoEvents ı burdada kullanmayı denedım ama yemedi :d
Timer li yada timersiz eşit zaman gecıkmesı nasıl yapabılırım?
Yardımlarınız için teşekkürler...
Başlık: visual basic te for next dongusu
Gönderen: armys2000 - 19 Şubat 2007, 14:19:26
@XX_CİHAN_XX hocam dediğiniz doğru yazdığınız döngüler her işlemcide her pc her işletim sisteminde hatta pc nin o anki yoğunluğuna göre ya çok hızlı çalışır yada yavaşlar. Bunun yerine Timer objesini kullanbilirsiniz veya  API kullanarak bir fecikme sağlayabilirsiniz. Aşağıdaki API olabilir mesela burda biraz farklı bir uygulaması var ama bunu düzenleyebilirsiniz




Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'API bu


Aşağıdaki de bu api yi kullanılarak yapılmış bir fonksiyon
Private Function CevapBekle(lDelay As Long, Cevap As String) As Variant
Dim szTemp As Variant
Dim Buffer As Variant
Dim x As Long
DoEvents
If Cevap = "" Then
 For x = 1 To lDelay
   
   Sleep 1000
 Next x
Else
 For x = 1 To lDelay
   DoEvents
   If InStr(m_Buffer, Cevap ) Then
     Exit For
   Else
     DoEvents
     Sleep 500
     DoEvents
   End If
 Next x
End If

If Len(m_Buffer) > 0 Then
 DoEvents
 Debug.Print Time & " - Data Alındı: " & m_Buffer
End If

CevapBekle= m_Buffer


End Function



Başlık: visual basic te for next dongusu
Gönderen: armys2000 - 19 Şubat 2007, 14:23:30
sayın hocam Vb den nefret ediyorum bu yuzden o nedenle kökten değişikliğie gidiyorum c ye adım atmak gibi eğer yol yakınsa sizde dönün derim  sizin dediğiniz sorunları çok yaşadım o nedenle kına geldi artık ..

VB out  C++ IN
Başlık: visual basic te for next dongusu
Gönderen: XX_CİHAN_XX - 19 Şubat 2007, 14:53:14
VB konusunda haklısın.Kolaylıgına aldandık ama bu tür sıkıntılar yuzunden basic dilini bir türlü benimseyemedim.Bende C taraftarıyım kısa sürede bitirmem gereken basit bir uygulama oldugu ıcın basic i sectım nitekim bitti sayılır for dongusundekı problemide aştıgımda sorun kalmıyacak.Sleep ifadesini bir deneyim bakalım.Tekrar teşekkürler...
Başlık: visual basic te for next dongusu
Gönderen: rree - 19 Şubat 2007, 23:13:36
Timer objesini bir sayaç eklenir. Sayac=sayac+1
Sayac değeri text  kutusuna gönderilir. Timer objesi içinde For next döngüsü kullanmak mantıklı değil. Timer interrupt çağrısı yeterli gelmiyorsa onu bilemem.
Başlık: visual basic te for next dongusu
Gönderen: XX_CİHAN_XX - 19 Şubat 2007, 23:30:50
Alıntı yapılan: "rree"Timer objesini bir sayaç eklenir. Sayac=sayac+1
Sayac değeri text  kutusuna gönderilir. Timer objesi içinde For next döngüsü kullanmak mantıklı değil. Timer interrupt çağrısı yeterli gelmiyorsa onu bilemem.
timer içinde for next kullanmıyorum zaten sorun for next ın ıcındeyken timer kesmesi oluşmuyor.Sleep fonksıyonunuda ıstedıgım sekılde kullanamadım.Şuankı derdım hazırladıgım program for next dongulerını kullanarak zaman gecıkmesı yaptıgı ıcın her pc de aynı gecıkme olusmuyor.Timer kullanmaya calısıyorum ama bu timer sanırım bazı yerlerde kesmeye gıtmıyor sebebını anlamış degılım :roll: