USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Dicas

  Visual Basic    (Miscelâneas)

Título da Dica:  Controlando o tempo em loops
Postada em 3/9/2003 por Ð@®l@n            
Inicialmente poderia parecer complicado fazer com que um determinado loop rode exatamente por um determinado periodo de tempo (segundos ou algo menor que isso), mas utilizando algumas funções da API do windows podemos obter esse resultado. Veja:

#If Win32 Then
Private Declare Function GetTickCount _
Lib "kernel32" () As Long
#Else
Private Declare Function GetTickCount _
Lib "User" () As Long
#End If

Essa função, GetTickCount, nos fornece um número que funciona quase que como um timer. Utilizando uma função que nos dê a diferença entre 2 chamadas de GetTickCount chegamos ao resultado desejado. Veja a função :

Public Function TickDiff( _
ByVal TickStart As Currency, _
ByVal TickEnd As Currency) As Long

' CCur(2 ^ 32)
Const TwoToThe32nd As Currency = 4294967296@

' Handle two's complement for values larger than
' 2147483647&
If TickStart < 0 Then
TickStart = TickStart + TwoToThe32nd
End If
' Handle two's complement AND the case where
' timeGetTime/GetTickCount wraps at (2 ^ 32)ms,
' or ~49.7 days:
If (TickEnd < 0) Or (TickEnd < TickStart) Then
TickEnd = TickEnd + TwoToThe32nd
End If
' Return the result
TickDiff = TickEnd - TickStart
End Function

Agora veja como utiliza-la :

Public Sub SampleLoop()
Dim TickStart As Currency
TickStart = GetTickCount()
' Loop for 5 seconds
Do While TickDiff(TickStart, GetTickCount()) _
< 5000
' loop code here
Loop
End Sub

Primeiramente foi pego na variável TickStart o valor de GetTickCount. O loop então é feito com base no resultado da função TickDiff : Quando a diferença entre o start e o GetTickCount atual for maior que 5000 (5 segundos) o loop para.
 


CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página