Her er det brugt i en kode, som er forklaret så du kan lære syntaxen, ikke algoritmen! Alt hvad det kræver er at du har en 'Label', hvis property 'Name' er sat til "lblTime".
- Du stopper og nulstiller stopuret på F9
- Du starter stopuret på F11
- Du stopper stopuret på F12
Her er også lidt guf til Cristian så han kan lære ikke at bruge de grimme "On Error" koder
'Gør at hele din kode bliver evalueret så du ikke bruger tal hvor der skal stå bogstaver
Option Explicit
'GetAsyncKeyState(KNAP), giver dig en knaps status på tasteturet, fx vbKeyF11 eller vbKeyA
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
'GetTickCount(), giver dig computerens oppetid i millisekunder
Private Declare Function GetTickCount Lib "Kernel32" () As Long
'3 variabler der er tilgængelig i hele formens kode (havde jeg skrevet public (istedet for private) ville den være tilgængelig i hele programmets kode)
'Const betyder at den ikke kan ændres undervejs (konstant)
Private Const FileAdr = "Tid.txt"
Private StartTime As Long
Private BufferTime As Long
'En "sub" jeg får frem ved at dobbeltklikke på formen.
Private Sub Form_Load()
'En variabel af samme type som GetTickCount (Long)
Dim BufferStr As String
'En variabel der kan have 2 værdier, True eller False
Dim ShowTime As Boolean
'Dir() tjekker om filen findes
If Dir(FileAdr) <> "" Then
Open FileAdr For Input As #1
Line Input #1, BufferStr
Close #1
StartTime = GetTickCount() - CDbl(BufferStr)
BufferTime = GetTickCount()
Else
StartTime = 0
BufferTime = 0
End If
ShowTime = False
'Et objekt af typen Label, der ligger på formen, skal have sin caption værdi ændret til tiden.
'En labels caption og en textboxs text, er den tekst der bliver vist til brugeren
'Format er en indbygget funktion i VB der gør at man kan omskrive udtryk forholdsvis enkelt
lblTime.Caption = Format((GetTickCount() - StartTime) / 1000 / 60 / 60 / 24, "hh:mm:ss")
'Jeg laver et loop i Form_Load() så vis formen med det samme
Me.Show 'Me hentyder til den form, som koden blev skrevet i
'En while-løkke der gentager sig indtil true = false, og det sker selvfølgelig aldrig
While True
'Doevents sørger for at andre programmer også får tid til at tænke
DoEvents
'Man spørger her om F9 knappen er klikket, False hvis den ikke er klikket
If GetAsyncKeyState(vbKeyF9) <> False Then
StartTime = 0
BufferTime = 0
ShowTime = False
lblTime.Caption = Format(0, "hh:mm:ss")
End If
'Man spørger her om F11 knappen er klikket, False hvis den ikke er klikket
If GetAsyncKeyState(vbKeyF11) <> False Then
If ShowTime = False Then
StartTime = StartTime + (GetTickCount() - BufferTime)
ShowTime = True
BufferTime = 0
End If
End If
'Man spørger her om F12 knappen er klikket, False hvis den ikke er klikket
If GetAsyncKeyState(vbKeyF12) <> False Then
If ShowTime = True Then
ShowTime = False
BufferTime = GetTickCount()
End If
End If
'Man spørger her om ShowTime har værdien True
If ShowTime = True Then
lblTime.Caption = Format((GetTickCount() - StartTime) / 1000 / 60 / 60 / 24, "hh:mm:ss")
End If
'Gå til der hvor der står while
Wend
End Sub
'Denne "sub" fik jeg frem ved at vælge "Form" i den venstre liste, og "Unload" i den højre
Private Sub Form_Unload(Cancel As Integer)
'Gem oplysningerne
Open FileAdr For Output As #2
Print #2, CStr(GetTickCount() - StartTime - IIf(BufferTime = 0, 0, (GetTickCount() - BufferTime)))
Close #2
'Forsøg at slette så meget som muligt fra hukommelsen
Unload Me
DoEvents
'Ulempen ved at lave et loop der kører fra starten af programmets udførelse er at det ikke kan lukke da det aldrig rigtig blev sat i gang! Derfor lukker man med End.
End
End Sub
// Your brain is your weapon, do not waste it!!