none
loop 速度 RRS feed

  • 問題

  • 您好:我昰VB6.0程式新手,請問我使用do....loop until的迴圈,外圈內部尚包相同迴圈,

    如果我想要外部迴圈速度變慢,每秒執行一次,而內部迴圈不受影響,要該如何做?

    2008年5月16日 上午 05:46

解答

所有回覆

  • HI,

     

    您可以呼叫Sleep, 看是否可以達到您的要求:

     

    http://www.freevbcode.com/ShowCode.asp?ID=7556

     

    tihs

    2008年5月16日 上午 06:34
  • 2008年5月16日 上午 07:25
    版主
  • 您好:我還是不太會使用Sleep......

    能幫我看下面程式嗎?

    Private Sub Command1_Click()

     

     Do

      x = x + 1

      If x > y Then

       If x < y Then

         Do

          y = y - 0.1

         Loop Until y > x

        

       Do

         y = y + 0.1

       Loop Until y < x

     

    Loop Until x = 10

     

    End Sub

     

    我希望x1,2,3,4…..每秒持續加1,不知該如何做?

     

    2008年5月18日 上午 08:14
  • 網誌裡面有寫:

    Code Snippet

     

    VB6 的因為在我網站上已經有放了,所以網誌這邊沒特別寫,事實上 VBNET 的網誌這邊也簡化了,我自己用的比較複雜。
    VB6 的 MyDoEvents

     

     


    基本條件裡面那個超連結是程式碼,抄到你的專案即可。

    2008年5月18日 上午 08:19
    版主
  • 您好:請問昰將.bas檔加到專案嗎?還是將其複製貼於程式碼內?

    我都試過但是不可以

     

    2008年5月18日 上午 11:39
  • ...

    看程式碼就知道,只需要這幾行:

    Code Snippet

    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

     

    Public Function MyDoEvents(Optional ByVal dwMilliseconds As Long = 1)
       MyDoEvents = DoEvents()
       Sleep dwMilliseconds
    End Function

     

     

    你要整個 bas 加入專案也可以,不管你如何試,若是發生問題時,應該明確描述你的做法與錯誤訊息,而不是說:「我都試過但是不可以」,你這樣說誰知道你發生了什麼事?怎樣不可以?

    2008年5月18日 上午 11:55
    版主
  • 您好:終於成功了,只是請問當x很大,內部迴圈計算量大時整體時間的準確度是否有影響?

    2008年5月19日 上午 01:45
  • MyDoEvents 屬於迴圈外時間延遲,跟你的 x 大小無關。

     

    給你的連結有說過,在 Sleep 的解析度為 10 ms ,要提高精確度要用另一組 API 。

     

    若你是要定時執行某項工作,請用 Timer 控制項。

     

    2008年5月19日 上午 02:20
    版主