Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Junio 07, 2011, 06:15:55 pm
-
Hola tengo este codigo en una clase que pego abajo y que quiero utilizar para leer intervalos de tiempo. El asunto es que me lo devuelve en un formato como este 104522,416629208 y yo quisiera que sea hh:mm:ss y no logro hacerlo con la funcion format.
Gracias por su ayuda
Option Explicit
Private Declare Function QueryPerformanceFrequency Lib "kernel32" (lpFrequency As Currency) As Long
Private Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Currency) As Long
Dim curCountFreq As Currency 'Tiendas de cuántos garrapatas se producen por segundo
Dim curCountStart As Currency 'Tiendas de la garrapata en cuenta que el temporizador se inició
Dim dblSeconds As Double 'Longitud del contador de tiempo
Public Sub SetTimer(Seconds As Double)
dblSeconds = Seconds 'Set the length...
QueryPerformanceCounter curCountStart 'Store current time for later comparison
End Sub
Public Function Expired() As Boolean
Dim curNow As Currency
QueryPerformanceCounter curNow 'Recuento de garrapatas actual
' | Encuentra la diferencia entre el número de garrapatas principio y el
'\|/ recuento de garrapatas actual y lo divide por el número de garrapatas por
' v por segundo para buscar el paso del tiempo (en segundos).
If (curNow - curCountStart) / curCountFreq >= dblSeconds Then 'Tiene tiempo suficiente
Expired = True 'pasado?
Else
Expired = False
End If
End Function
Private Sub Class_Initialize()
QueryPerformanceFrequency curCountFreq 'Tienda de segunda para el cálculo posterior garrapatas
End Sub
Public Function GetTime() As Double
Dim curNow As Currency
QueryPerformanceCounter curNow 'Obtener el recuento de garrapatas actual
' | Encuentra la diferencia entre el número de garrapatas principio y el
'\|/ recuento de garrapatas actual y lo divide por el número de garrapatas por
' v por segundo para buscar el paso del tiempo (en segundos).
GetTime = (curNow - curCountStart) / curCountFreq
End Function
-
Esta funcion te puede servir :)
Public Function TimeString(ByVal Seconds As Long) As String
Dim lHrs As Long
Dim lMinutes As Long
Dim lSeconds As Long
lSeconds = Seconds
lHrs = Int(lSeconds / 3600)
lMinutes = (Int(lSeconds / 60)) - (lHrs * 60)
lSeconds = Int(lSeconds Mod 60)
Dim sAns As String
If lSeconds = 60 Then
lMinutes = lMinutes + 1
lSeconds = 0
End If
If lMinutes = 60 Then
lMinutes = 0
lHrs = lHrs + 1
End If
sAns = Format(CStr(lHrs), "#####0") & ":" & _
Format(CStr(lMinutes), "00") & ":" & _
Format(CStr(lSeconds), "00")
TimeString = sAns
End Function
-
Saludos Mike !!!
Uno de los detalles que estuve leyendo acerca de esas API's, es que sus parámetros son de tipo Currency, así como las variables que se van a usar para realizar los cálculos.
Poor lo tanto los valores devueltos son 10000 veces menores que el de los contadores reales (según la web de Soporte Microsoft).
Te dejo el enlace, espero te sirva de algo.
http://support.microsoft.com/kb/172338/es (http://support.microsoft.com/kb/172338/es)
Saludos.
Manuel F. Borrego S. 8)
Barcelona, Edo. Anzoátegui. Venezuela.
PD: Saludos LolaByte. La función que propones es muy interesante y sencilla a la vez,
Siempre se aprende algo todo los días (y mucho !!!).
-
Muchisimas gracias Lola y Manuel muy interesante el aporte y me han solucionado este temita!!
:)