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?
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
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...
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...
@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
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
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...
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.
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: