Ayuda con programacion en Visual Basic please!

-DnT-

Buenas, esta evaluacion en informatica, me he servido a explicar algo sobre overclocking, pero mi profesor me ha dicho que quiere llevarlo a la practica, y me ha dicho que haga un programa con el visual que tenga un contador y que al darle a un boton, empiece a contar, y a los 30 segundos se pare.

El programa es para comparar el contador antes y despues del overclocking. Y bueno, el caso es que lo llevo un poco liado... mas que nada porque no se como van los timers y no se mucho de programacion... aqui os pongo lo que mas o menos he conseguido hacer:

Dim i As Long

Private Sub Start_Click()
Timer1.Enabled = True
Do
    If Timer1.Interval = 30000 Then Exit Do
    For i = i To i + 1
    op.Caption = i
    Next i
i = i + 1
DoEvents
Loop
End Sub

Sub Timer1_Timer()
    Timer1.Interval = 30000
End Sub
Sub Form_Load()
    Timer1.Enabled = False
End Sub

El tema es que si que cuenta...pero se para cuando le da la gana... ;(

Thanat0s

For i = i To i + 1
op.Caption = i
Next i
i = i + 1

Buenas, la parte de código que tienes arriba no tiene sentido.

Hay una regla básica y es que en un for tu núnca puedes alterar el valor de la variable que está llevando el conteo despues de iniciar la ejecución del for.

Por tanto si haces i = i y en la primera vuelta i se incrementa en uno, a la siguiente vuelta se va a volver loco.

No me acuerdo como iban los fors en visual, por lo que no sé si el next i es la forma correcta de cerrar el for (con tanto lenguaje uno se hace un lio :S ) .

El caso es que si tienes un for no necesitas incrementar la variable manualmente, es decir, te sobraría el i = i + 1.

SiNSoNiDo

No sé si será esto lo que pides:
<-- Form1.frm -->
Private Sub Command1_Click()
If Timer1.Enabled = False Then
Timer1.Enabled = True
Command1.Caption = "Apagame"
Else
Timer1.Enabled = False
i = 0
Label1.Caption = i
End If
End Sub

Private Sub Form_Load()
Label1.Caption = i
Timer1.Enabled = False
Timer1.Interval = 1000
i = 0
End Sub

Private Sub Timer1_Timer()
i = i + 1
Label1.Caption = i
If i > 30 Then
Timer1.Enabled = False
Command1.Caption = "Enciéndeme"
i = 0
Label1.Caption = i
End If
End Sub

<-- Module1.bas -->
Public i As Integer

descarga el ejemplo akí -> http://s65.yousendit.com/d.aspx?id=1VT75PE1HM7YE0LSY0NF3HBB74

P.D.: taba ahora en clase me aburría y... ^^

-DnT-

#3, Ostias gracias! si que pedia eso, pero a parte de con el cronometro, que saliera un contador que se pusiera a contar todo lo que pueda en esos 30 segundos para luego contrastarlo despues del overclock

SiNSoNiDo

segunda versión del programita -> http://www.megaupload.com/es/?d=8XQTY52W
pruébalo y ya me contarás si funciona como tu deseabas ^^

LoRTH

BUeno, para hacer eso, cojes una variable,la inicializas a cero, y en un for, o un while, hasta que termine el contador que le sume uno a la variable.

Usuarios habituales

  • LoRTH
  • SiNSoNiDo
  • -DnT-
  • Thanat0s