Toon posts:

[VB]Ten einde raad: Proggie Freezed!

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb dus een leuk proggie gemaakt in VB,
deze vraagt eerst om een getal in te vullen dat voor minuten staat, daarna moet je op een knop drukken en dan hoort ie te gaan rekenen, alleen freezed is dan (programma reageert niet meer, voor de noobs)
Hier is mn vb code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Dim beginuur, beginmin, beginsec, begintijd, einduur, eindmin, eindsec, eindtijd, resterenduur, resterendmin, resterendsec, uurnu, minnu, secnu 'Maakt alle variable aan
   Private Sub Form_Load()
   
   status.Caption = "Bezig" 'Zet het vakje "status" op "Bezig"
   
   MsgBox ("EEN BERICHT :D") 'Geeft welkomsbericht
   eindmin = InputBox("Voer hier eerst even in over hoeveel minuten...BLABLA... ") 'Vraagt om het aantal minuten tot X
     
   End Sub
   'start is de knop waarmee je het programma "aanzet"
   Private Sub start_click()
   
   beginuur = Hour(Now())     'Deze drie
   beginmin = Minute(Now())   'halen de begintijd
   beginsec = Second(Now())   'van de lokale pc.
   begintijd = TimeSerial(beginuur, beginmin, beginsec) 'samenvoegen tijd
   
   begintijd2.Text = begintijd 'laat de begintijd zien in het programma
   
   einduur = beginuur        'Bereken
   eindmin = beginmin + eindmin 'de
   eindsec = beginsec        'eindtijd
   eindtijd = TimeSerial(einduur, eindmin, eindsec) 'Stelt de eindtijd samen
   
   eindtijd2.Text = eindtijd
   
   Do While status.Caption = "Bezig"
   
   uurnu = Hour(Now())     'Deze drie
   minnu = Minute(Now())   'halen de tijd
   secnu = Second(Now())   'van de lokale pc op elke seconde.
   
   resterenduur = (einduur - uurnu) 'Deze drie
   resterendmin = (eindmin - minnu) 'berekenen de
   resterendsec = (eindsec - secnu) 'resterende tijd.
   resterend = TimeSerial(resterenduur, resterendmin, resterendsec) 'Voegt de resterende tijd samen
   
   resterend.Text = resterend 'Vult de resterende tijd in
   
      If resterend = eindtijd Then
        'Shell "C:\knnsnt.BAT"
        MsgBox ("SUCCES!")
      End If
   
   Loop
   
   End Sub

Er zijn dus 2 form-velden:
begintijd2
eindtijd2
Een tekst laag:
status
En een button:
start

WAAROM DOET IE HET NIET?

  • whoami
  • Registratie: December 2000
  • Laatst online: 19:30
Omdat je in een oneindige lus terechtkomt.
Je zet je caption in uw lus nergens op iets anders dan bezig. (Beetje een n00b fout hoor. >:) )

Trouwens, het is veel mooier om met een boolean variable te werken die aangeeft of je 'bezig' bent of niet.

https://fgheysels.github.io/


Verwijderd

Met F8 kan je debuggen ;)

edit:
code:
1
2
3
4
5
      If resterend = eindtijd Then
        'Shell "C:\knnsnt.BAT"
        MsgBox ("SUCCES!")
        *** Let status.Caption = "Klaar" ***
      End If

Je moet ergens de caption veranderen, anders gaat hij idd oneindig lang door, want hij is altijd bezig (dan wel ja >:))

Verwijderd

Topicstarter
omg |:(
Snel kijken of het werkt!!!!

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Hij springt nooit uit de While Lus.

En hoe lang moet hij 'bezig' blijven?

Want resterend wordt op een gegeven moment nul.
En zal dus nooit gelijk worden aan de eindtijd?

Verwijderd

Topicstarter
Damn, heb het erbij gezet
-------------------------
If resterend = eindtijd Then
'Shell "C:\knnsnt.BAT"
MsgBox ("SUCCES!")
status.Caption = "KLAAR!!"
End If
-------------------------
Maar hij blijft nogsteeds gefreezed als ik op de knop druk...

Verwijderd

Topicstarter
Op maandag 27 mei 2002 21:15 schreef robjanssen het volgende:
Hij springt nooit uit de While Lus.

En hoe lang moet hij 'bezig' blijven?

Want resterend wordt op een gegeven moment nul.
En zal dus nooit gelijk worden aan de eindtijd?
Hmm, dat zou ook nog kunnen.
Weet |:(
van die if resterend = eindtijd moet tijdnu = eindtijd :D

Edit:
Hij doet het nog steeds niet :'(

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

Juist en zet voor de loop maar een DoEvents, dan ziet het er minder 'freezed' uit.

Verwijderd

Topicstarter
DoEvents:
Leg nader uit

In de debug mode: F8, doet ie het wel perfect :?

  • robjanssen
  • Registratie: September 2001
  • Laatst online: 02-08 16:10

robjanssen

Software Developer

DoEvents is een functie van Visual Basic.
Die handelt alle events af.

Dan ziet je programma er niet freezed uit.

Raadplaag anders ff de help.

Verwijderd

Topicstarter
Op maandag 27 mei 2002 21:24 schreef robjanssen het volgende:
DoEvents is een functie van Visual Basic.
Die handelt alle events af.

Dan ziet je programma er niet freezed uit.

Raadplaag anders ff de help.
cool, het werkt, you own :)

Topic kan van mijn part wel dicht...
Pagina: 1