Autor Tema: Formatear resultado de clase de tiempo clsTimer  (Leído 3252 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Formatear resultado de clase de tiempo clsTimer
« 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
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Lolabyte

  • Bytes
  • *
  • Mensajes: 35
  • Reputación: +15/-0
    • Ver Perfil
Re:Formatear resultado de clase de tiempo clsTimer
« Respuesta #1 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

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Formatear resultado de clase de tiempo clsTimer
« Respuesta #2 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

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 !!!).
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

Bazooka

  • Terabyte
  • *****
  • Mensajes: 951
  • Reputación: +31/-20
  • El pibe Bazooka
    • Ver Perfil
    • Desof sistemas
Re:Formatear resultado de clase de tiempo clsTimer
« Respuesta #3 en: Junio 07, 2011, 08:13:58 pm »
Muchisimas gracias Lola y Manuel muy interesante el aporte y me han solucionado este temita!!
 :)
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.