Diferenciar tiempos de entrada y de sistema mediante la función DateDiff u otra similar

Gracias de antemano, necesito sacar una diferencia entre un tiempo de entrada y el tiempo del sistema, tengo el siguiente código
Private Sub Form_Load()
Label1 = Time$
tiempoinicio = Time$
End Sub
Private Sub Timer1_Timer()
Label2 = Time$
Label3 = DateDiff("s", tiempoinicio, Time$)
End Sub
Uso la función DateDiff, obviamente la estoy usando mal, alguien podría decirme que es lo que falla, ¿o si lo podría hacer por medio de otra función?

1 Respuesta

Respuesta
1
Te voy a orientar hacia otro lado, el maravilloso mundo de las API's :-)
La función a continuación te devuelve el tiempo en milisegundos desde que se reinició el windows:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
La cosa seria tan sencilla como lo siguiente:
Private Sub Form_Load()
Label1 = GetTickCount()
tiempoinicio = Label1
End Sub
Private Sub Timer1_Timer()
Label2 = GetTickCount()
' Resultados en segundos...
Label3 = (Label2 - Label1) / 1000
End Sub
Alex. :-D
¿Qué version de visual usas?...
Al copiar y pegar el código, en la declaración de la api, pego:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Y automaticamente lo convierte en:
Declare Function GetTickCount Lib "kernel32" () As Long
Y me vota un error de compilación:
No se permiten constantes, cadenas de longitud fija, matrices e instrucciones. Declare como miembros Public de modulos de objeto.
Intente declararla como un modulo... y automáticamente le quita el Alias... ¿tienes alguna idea de por que lo hace?
No lo declaré y funciono...
Encontré una solución un poco más sencilla...
Private Sub Form_Load()
Label1 = Format(Now, "hh:mm:ss")
End Sub
Private Sub Timer1_Timer()
Dim t0 As Variant, t1 As Variant
Label2 = Format(Now, "hh:mm:ss")
t0 = Format(Label1, "hh:mm:ss")
t1 = Format(Label2, "hh:mm:ss")
Label3 = Format(TimeValue(t1) - TimeValue(t0), "hh:mm:ss")
End Sub
Me gustaría que me dieras tu opinión.. y a propósito de Api's, ¿conoces alguno que monitoree la cola de impresión en una red?
Muchas gracias
... en espera de tus comentarios.
Otra vez...
El que te quite el alias no tiene la más mínima importancia, debido a que es el mismo que el nombre original, el alias sirve para querer llamar a esa función de una forma distinta a la que originalmente tiene.
El error te lo daba por que no puedes definir esa función como publica en un formulario si la declaras como privade (private) todo solucionado.
Private Declare Function GetTickCount Lib "kernel32" () As Long
Respecto al nuevo algoritmo que has encontrado Si te funciona... adelante. Hay muchas formas de hacer una misma cosa.
En lo referente a la API de la cola de impresión...
Si que existe pero mira la página a continuación...
http://www.telecable.es/personales/jrubi/index.htm?trucos/tip00131.htm
... y descárgate el ejemplo que hay allí.
Suerte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas