| 
	
		|  Autor | Tema: contador en segundos? timer?  (Leído 3,027 veces) |  
	| 
			| 
					
						| markx 
								
								 Desconectado 
								Mensajes: 11
								
								
								
								
								
								   | 
 
 var tiempo
 tiempo = 0
 
 mientras  tiempo <= "10" {
 
 haceralgo()
 
 sino
 
 salir
 
 }
 
 
 bueno algo asi seria lo que quiero programar en vb.. utilizando un timer k vaya contando en segundos hasta 10 y que haga algo mientras el tiempo en segundos sea menor a 10, alguna idea? pistas?
 thanks!
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| cobein | 
 
Hay mil maneras de hacer eto, aca hay un ejemplo que creo es de lo mas facil
 Option Explicit
 
 Private lTime As Long
 
 Private Sub Form_Load()
 lTime = Timer
 Timer1.Interval = 1000
 Timer1.Enabled = True
 End Sub
 
 Private Sub Timer1_Timer()
 Timer1.Enabled = False
 If lTime + 10 < Timer Then
 Debug.Print "OK"
 lTime = Timer
 End If
 Timer1.Enabled = True
 End Sub
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| HaDeS, - 
								WarZone Master  Desconectado 
								Mensajes: 284
								
								     | 
 
Hay mil maneras de hacer eto, aca hay un ejemplo que creo es de lo mas facil
 Option Explicit
 
 Private lTime As Long
 
 Private Sub Form_Load()
 lTime = Timer
 Timer1.Interval = 1000
 Timer1.Enabled = True
 End Sub
 
 Private Sub Timer1_Timer()
 Timer1.Enabled = False
 If lTime + 10 < Timer Then
 Debug.Print "OK"
 lTime = Timer
 End If
 Timer1.Enabled = True
 End Sub
 
 Lo que haces aca es ejecutar una funcion cada 1 segundo, y lo que markx pide es ejecutar una funcion mientras el tiempo sea mejor a eso: Voy arreglar tu codigo   Dim Tiempo&Private Sub Form_Load()Timer1.Interval = 1000Timer1.Enabled = FalseEnd Sub Private Sub Timer1_Timer()Tiempo = Tiempo + 1End Sub PRivate Sub Command1_Click()'Este empieza a ejecutar las acciones mientras el tiempo sea mejor a 10 segundosTimer1.Enabled = TrueTiempo = 0Call Verificar("10")End Sub Private Sub Verificar(TiempoAVerificar&)While Tiempo <= TiempoAVerificar 'Funciones DoEventsWendEnd Sub 
 Listo    creo que puede funcionar asi, me dio pereza sacar el visual, asi que si hay algun error posteadlo. Saludos   |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| H4NG3R 
								
								 Desconectado 
								Mensajes: 13
								
								
								
								
								
								   | 
 
Private Sub Wait(ByVal nSec As Integer)'Esperar un número de segundos
 Dim t1 As Date, t2 As Date
 
 t1 = Second(Now)
 t2 = t1 + nSec
 Do
 DoEvents
 Loop While t2 > Second(Now)
 End Sub
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| cobein | 
 
HaDeS, el timer si se ejecuta cada 1 segundo pero la funcion no la funcion se ejecuta cada 10 si miras bien el codigo vas a ver que "Debug.Print "OK" se ejecuta cada 10 seg. Sino hacelo facil abri VB pega el code y probalo. Y si el lo que quiere es alreves lo unico que tiene que hacer y invertir el sigo , negar el if o usar un else, pero al final de cuentas es lo mismo. |  
						| 
								|  |  
								| « Última modificación:  3 Septiembre 2007, 03:47 am por cobein » |  En línea | 
 
 |  |  |  | 
			| 
					
						| HaDeS, - 
								WarZone Master  Desconectado 
								Mensajes: 284
								
								     | 
 
see me equivoque   , vi tu code por encima, pero tu tambien te equivocaste    lee: ..utilizando un timer k vaya contando en segundos hasta 10 y que haga algo mientras el tiempo en segundos sea menor a 10
 ...
 
 Jeje, saludos   Pdata. No modifiques los post   Si hace eso, entonces si se ejecuta la funcion cada segundo. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| cobein | 
 
Solamente agregue mas texto no modifique nada del original |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| cobein | 
 
HaDeS mi intencion aca es cooperar y ayudar a los demas, si quiero competir me anoto en un concurso ok? si mi codigo esta mal o malinterprete una pregunta lo lamento soy humano.
 Con respecto a las 3 soluciones que se presentaron te digo la tuya es literalmente lo que el dice, cosa que no tiene mucho sentido, para que utilizar un timer para verificar el tiempo cada 1 seg si la funcion que vas a ejecutar esta dentro de un loop? en todo caso es exactamente lo mismo que presento H4NG3R y la respuesta de el es mas simple y no depende de un timer. Con respecto a mi funcion "que si funciona" es mucho mas flexible, podes ejecutar tu codigo cana N millisecs o podes poner un intervalo de 1 millisec y vas  a tener practicamente el  el mismo efecto que en un loop y dependiendo de donde pongas tu funcion si en el if o en el else tambien podes ejecutar el codigo cada N segundos.
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| markx 
								
								 Desconectado 
								Mensajes: 11
								
								
								
								
								
								   | 
 
wenoo, se pelean por mi, me siento importante xDDDDDDDDDDD nah, hablando enserio esta tdo bien, no es competencia, somos seres humanos todos y estamos para aprender y ayudarnos entre todos, no importa si cobein mal interpreto la pregunta, lo importante es la intencion, con esto no estoy criticando nada a hades tampoco.. lo k digo es no se piken! weno con respecto al code de hades aki lo dejo arreglado funcionando: Dim Tiempo As IntegerPrivate Sub Form_Load()
 Timer1.Interval = 1000
 Timer1.Enabled = False
 End Sub
 
 Private Sub Timer1_Timer()
 Tiempo = Tiempo + 1
 End Sub
 
 Private Sub Command1_Click()
 'Este empieza a ejecutar las acciones mientras el tiempo sea mejor a 10 segundos
 Timer1.Enabled = True
 Tiempo = 0
 Call Verificar("10")
 End Sub
 
 Private Sub Verificar(TiempoAVerificar&)
 While Tiempo <= TiempoAVerificar
 'Funciones
 Label1.Caption = Tiempo
 DoEvents
 Wend
 End Sub
solo cambie lo de "Dim tiempo&" por "Dim tiempo as Integer", podria haber puesto as long la variable pero no trabajare con numeros muy grandes asi k seria solo para desperdiciar memoria, ah y tambien agregue un label para depurar   ahora lo k no entiendo es para k es el "&", dim tiempo& ? otra kosa, el "Call" para k lo pusiste? y para k se utiliza ? |  
						| 
								|  |  
								| « Última modificación:  3 Septiembre 2007, 04:58 am por markx » |  En línea | 
 
 |  |  |  | 
			| 
					
						| HaDeS, - 
								WarZone Master  Desconectado 
								Mensajes: 284
								
								     | 
 
Okas, mira podes declarar de varias formas las variables, ya te explico, mejor dicho te hago una tablita: Tipo      Equivalencia Integer      % Long      & Single      ! Double      # Currency   @ String      $ Asi que: Dim Tiempo& equivale a decir Dim Tiempo As Long Solo los que he mencionado tienen esa equivalencia, los otros tipos de datos no la tiene... Lo hago para ahorrarme el tener que copiar tanto. Por otro lado la instruccion call solo se usa para llamar una funcion. Es equivalente a decir Verificar "10" Es todo   Saludos   |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | problema con contador que toma segundos del sistema ASM
 | FERNIIIIN | 3 | 2,691 |  28 Mayo 2019, 23:39 pm por xv0
 |  
						|   |   | 15 segundos Multimedia
 | Zorronde | 5 | 31,935 |  14 Octubre 2021, 05:36 am por Danielㅤ
 |  
						|   |   | Contador 59 segundos en VHDL Electrónica
 | Nicolau | 1 | 10,417 |  21 Enero 2023, 19:58 pm por Meta
 |  
						|   |   | Poner un timer de 10 segundos .NET (C#, VB.NET, ASP)
 | Meta | 1 | 3,898 |  21 Febrero 2024, 10:07 am por elektrostudios2
 |    |