Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Bazooka en Junio 07, 2011, 06:15:55 pm

Título: Formatear resultado de clase de tiempo clsTimer
Publicado 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

Código: [Seleccionar]
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
Título: Re:Formatear resultado de clase de tiempo clsTimer
Publicado por: Lolabyte en Junio 07, 2011, 07:50:00 pm
Esta funcion te puede servir :)

Código: [Seleccionar]
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
Título: Re:Formatear resultado de clase de tiempo clsTimer
Publicado por: ADONAIRAFA en Junio 07, 2011, 08:01:51 pm
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 !!!).
Título: Re:Formatear resultado de clase de tiempo clsTimer
Publicado por: Bazooka en Junio 07, 2011, 08:13:58 pm
Muchisimas gracias Lola y Manuel muy interesante el aporte y me han solucionado este temita!!
 :)