Ejemplo Con Función Time


Objetivo: Ejemplo Con Función Time
Hola!.

(Vaya, me quede conectado y no me di cuenta).

De ejemplos a ejemplos, acabe sobre uno con la función Time de VB.
El código es este en VB:

Lo que pretende es que la aplicación no haga nada durante 5 segundos.

Private Sub Form_Load()
Dim TiempoPausa, Inicio, Final, TiempoTotal
If (MsgBox("Presione Sí para parar 5 segundos", 4)) = vbYes Then
TiempoPausa = 5 ' Asigna hora de inicio.
Inicio = Timer ' Establece la hora de inicio.
Do While Timer < Inicio + TiempoPausa
DoEvents ' Cambia a otros procesos.
Loop
Final = Time ' Asigna hora de finalización.
TiempoTotal = Final - Inicio ' Calcula tiempo total.
MsgBox "Detenida durante " & TiempoTotal & " segundos"
Else
End
End If
End Sub


En gambas no existe DoEvent como sabéis.
En esta lo que hice es mostrar el paso de los cinco segundos en el lcdlabel.

Public Sub Form_Open()

Me.Center

End

Public Sub Form_Activate()
Dim Inicio, Final, TiempoPausa, TiempoTotal As Date

If Message.Question("Presione Si para parar 5 segundos", "Si", "No") = 1 Then
TiempoPausa = Time(0, 0, 5)
Inicio = Time
Do While Time < CDate(Inicio + TiempoPausa)
'No existe DoEvents
Inc Application.Busy
LCDLabel1.Text = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
Dec Application.Busy
Loop
Final = Time
TiempoTotal = Final - Inicio
Message.Info("Detenida durante " & TiempoTotal & " segundos")
Else
Me.Close
Endif

End


Para efecto curioso, eliminar las lineas que contiene Inc Applicaton.Busy y Dec Application.Busy

Saludos

última edición por Shell el Miercoles, 09 Julio 2014, 21:11; editado 1 vez

EjemploFuncionTime.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploFuncionTime.tar.gz
Tamaño: 5.63 KB
Descargado: 42 veces
EjemploFuncionTime.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploFuncionTime.tar.gz
Tamaño: 5.63 KB
Descargado: 42 veces
EjemploFuncionTime.tar.gz
Descripción:  
Descargar
Nombre del archivo: EjemploFuncionTime.tar.gz
Tamaño: 5.63 KB
Descargado: 42 veces

Objetivo: Re: Ejemplo Con Función Time
Shell:

Citar:
Para efecto curioso, eliminar las lineas que contiene Inc Applicaton.Busy y Dec Application.Busy

Muy curioso, si las elimino, el label no se actualiza y no sale... y los dejo como lo tienes se ve claramente como se van "refrescando" los valores del label... muy interesante...

Otra cosa interesante... con tu código, la "carga" del cpu aumenta exesivamente (en mi ordenador), pero si metes un wait, esa carga no aumenta, y sigue funcionando el programa bien:
Do While Time < CDate(Inicio + TiempoPausa)
'No existe DoEvents
Inc Application.Busy
LCDLabel1.Text = Hour(Now) & ":" & Minute(Now) & ":" & Second(Now)
Dec Application.Busy

Wait 0.1 'añado que espere un momento
Loop


Saludos

Objetivo: Re: Ejemplo Con Función Time
jsbsan escribió: [Ver mensaje]

Otra cosa interesante... con tu código, la "carga" del cpu aumenta exesivamente (en mi ordenador), pero si metes un wait, esa carga no aumenta, y sigue funcionando el programa bien:


Efectivamente, eso pasa. Creo que con DoEvent pasa lo mismo. Incomprensible, ya que se supone que es para liberar la carga de cpu.

Es posible jugar con wait. No se si realmente llega a ser efectivo Application.busy.
Ya ves que solo es una linea lo que hay entre las dos.

Creo que he visto esa instrucción en algún ejemplo de los que incorpora Gambas.

Saludos


Página 1 de 1


  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario

   

Está utilizando la versión (Lo-Fi). Para ver la versión completa del foro, haga clic aquí.

Powered by Icy Phoenix based on phpBB
Design by DiDiDaDo

Página generada en:: 0.4145s (PHP: -75% SQL: 175%)
Consultas SQL: 47 - Debug off - GZIP Activado