none
como capturar las centesimas de segundo con VB 6.0 RRS feed

  • Pregunta

  • Buenas, necesito capturar las centesimas de segundo de la hora que tiene la maquina.

    Estoy trabajando en un sistema en VB 6.0, y tengo una variable donde almacena la hora, los minutos y los segundos del momento en que se genero un reporte, pero necesito ser mas preciso, entonces necesito usar las centesimas de segundo. Quisiera saber si alguien sabe como hacer esto?

    Gracias por cualquier ayuda!!

    miércoles, 21 de noviembre de 2012 22:14

Todas las respuestas

  • Esta podria ser una posible solucion a tu problema:

    Option Explicit
    Private Type SYSTEMTIME
      wYear As Integer
      wMonth As Integer
      wDayOfWeek As Integer
      wDay As Integer
      wHour As Integer
      wMinute As Integer
      wSecond As Integer
      wMilliseconds As Integer
    End Type
    Private Declare Sub GetSystemTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
    Private Sub Command1_Click()
      Dim sAns As String
      Dim typTime As SYSTEMTIME
      GetSystemTime typTime
      With typTime
        sAns = Format(.wHour-6, "00") & ":" & Format(.wMinute, "00") & ":" & _
               Format(.wSecond, "00") & "." & Format(.wMilliseconds, "000")
      End With
      MsgBox sAns,64,"Hora Actual"
    End Sub

    Con unas pequeñas modificaciones podrias hacer que muestre la hora en formato de 12 hrs o de 24 hrs... o con AM/PM... Te comento que el -6 es por lo de GMT-6 (Mexico).

    Saludos desde Mexico.


    EmmaRmz

    jueves, 22 de noviembre de 2012 7:23
  • Puedes hacerlo con un control TIMER

    Jhonatan Plata http://kayprogramacion.blogspot.com/

    jueves, 22 de noviembre de 2012 14:24
  • Hola,

    El timer te devuelve la cantidad de segundos transcurridos desde la medianoche.

    El colega necesita las centesimas de segundos, y tambien creo que va a necesitar un reloj atomico en cada una de las PC y lograr la sincronizacion de los relojes en cada PC.

    Victor Koch.

    jueves, 22 de noviembre de 2012 15:05
  • Prueba de esta manera, agrega un Timer1 a tu Form, y pega este codigo 
    Private Declare Sub GetLocalTime Lib "kernel32" (lpSystemTime As SYSTEMTIME)
    Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
    End Type
    
    Private Sub Form_Load()
    Me.AutoRedraw = True
    Timer1.Interval = 1
    End Sub
    
    Private Sub Timer1_Timer()
    Dim HoraSistema As SYSTEMTIME
    GetLocalTime HoraSistema
    
    With HoraSistema
    Cls
    Print .wDay & "/" & .wMonth & "/" & .wYear
    Print .wHour & ":" & .wMinute & ":" & .wSecond & ":" & .wMilliseconds
    
    End With
    End Sub


    Jhonatan Plata http://kayprogramacion.blogspot.com/

    jueves, 22 de noviembre de 2012 15:14
  • Gracias por la ayuda, voy a realizar las pruebas.
    viernes, 23 de noviembre de 2012 15:33
  • Hola, no soy ningún experto pero el otro día estuve trabajndo un poco con el control timer1.

    En la propiedad interval se introduce el valor con que quieres que este control reproduzca un evento, lo que no sé es la frecuencia mínima, el valor de interval es el tiempo en milisegundos, para centesimas de segundo usas 10, si haces que cada vez que se ejecute el timer te actualice una variable a nivel de formulario quizás te valga para obtener las centésimas de segundo.

    Un saludo y suerte.

    viernes, 7 de diciembre de 2012 17:33