Avatar billede cyberspace Nybegynder
04. september 2003 - 15:24 Der er 48 kommentarer og
1 løsning

automatisk tidtagning/stopur

Jeg sidder her med et program hvor jeg gerne vil tage tid ved hjælp at et stop ur, uret skal starte når der bliver klikket på start/når programmet starter og uret skal stoppe når programmet automatisk stopper.
Avatar billede overchord Nybegynder
04. september 2003 - 15:29 #1
Saa skal du have lagt en timer paa din form til at starte med. Timer eventen holder str paa optaellingen paa dit ur mens din start og stop knap sjovt nok starter og stopper timer-eventen :-)
Avatar billede lokespas Nybegynder
04. september 2003 - 15:29 #2
en timer control???
Avatar billede cyberspace Nybegynder
04. september 2003 - 15:37 #3
Overchord>> jeg har lavet det hele i forvejen jeg mangler bare lige koden - har lave denne funktion før det er bare ved at være LÆNGE! siden så jeg kan ikke lige helt huske koden (og hvor koden indsættes)
Avatar billede themepark Nybegynder
04. september 2003 - 16:33 #4
Det må vel være noget i stil med dette:

Dim Tid As Integer

Sub Form1_Load
  Timer1.Enabled=True
End Sub

Sub Form1_Unload
  Timer1.Enabled=False
End Sub

Sub Button1_Click
  Tid=0
  Timer1.Enabled=True
End Sub

Sub Timer1_Timer
  Tid=Tid+1
End Sub

Og så skal du blot sætte en værdi i Timer controllen til at være 1000 millisekunder=1 sekund...har ikke Visual Basic på denne maskine, så kan ikke huske hvad den hedder, og er heller ikke sikker på at det hedder Button1_Click, men hvis du dobbeltklikker på de forskellige dele, får du jo automatisk de rigtige Subs :-)
Avatar billede themepark Nybegynder
04. september 2003 - 16:33 #5
Ups...jeg glemte et svar :(
Avatar billede lokespas Nybegynder
04. september 2003 - 16:37 #6
Timer1.interval  = 1000
Avatar billede themepark Nybegynder
04. september 2003 - 16:39 #7
Det lyder meget rigtigt...men man KAN så også gøre det i selve design-fasen :)
Avatar billede lokespas Nybegynder
04. september 2003 - 16:49 #8
jep! det kan man
Avatar billede baxos Nybegynder
04. september 2003 - 19:16 #9
Noget i stil med det her :
Dim i As Integer

Private Sub Command1_Click()
Timer1.Enabled = True
Timer1.Interval = "1"
End Sub

Private Sub Command2_Click()
Timer1.Enabled = False
Text1.Text = Timer1.Interval
End Sub

Private Sub Form_Load()
i = CStr(CLng(i) + 1)
End Sub

Private Sub Timer1_Timer()
Timer1.Interval = a
End Sub
Avatar billede baxos Nybegynder
04. september 2003 - 19:25 #10
Ingen af koderne virker så vidt jeg kan se...
Avatar billede cyberspace Nybegynder
05. september 2003 - 08:22 #11
Jeg Bliver lige lidt mere konkret.

Den timerfunktion (stopur) som jeg skal bruge skal starte når jeg trykker start, stoppe når programmet stopper og køre videre hår jeg aktiverer så programmet kører videre. funktionen skulle gerne kunne stoppe automatisk når programmet stopper men også gerne blive manuelt stoppet (ved at trykke stop)
Avatar billede lokespas Nybegynder
05. september 2003 - 08:32 #12
Sub Form1_Load
dim Tid as long
Tid=0
'den tæller i sekunder
Timer1.interval = 1000
End Sub

Sub Form1_Unload
  Timer1.Enabled=False
End Sub

Sub Start_Click
  Timer1.Enabled=True
End Sub

Sub Stop_Click
  Timer1.Enabled=false
End Sub


Sub Timer1_Timer
'lægger et sek til
  Tid=Tid+1
End Sub

sub Reset_Click
Tid = 0
end sub
Avatar billede lokespas Nybegynder
05. september 2003 - 08:34 #13
"dim Tid as long" skal selvfølgelig undenfor subben
Avatar billede themepark Nybegynder
05. september 2003 - 08:50 #14
Jeg tror så småt brikkerne er ved at falde på plads. Du vil slet ikke have et stopur som et selvstændigt program/form, men derimod som en del af et andet program du er ved at lave eller hva?

Og når du siger, når programmet stopper, mener du så når programmet afsluttes med f.eks. Alt+F4, eller blot når det mister fokus?
Avatar billede cyberspace Nybegynder
05. september 2003 - 08:52 #15
lokespas>> Det funker "nada" Den brokker sig over følgende:
Private Sub Timer1_Timer()
'lægger et sek til
  Tid = Tid + 1
End Sub

Der er 2 súb Timer1_timer. jeg har prøvet at smidde ovenstående kode op i den førse, så får  jeg i det mindste ikke fejlmedd men der sker INTET!!!!!
Avatar billede lokespas Nybegynder
05. september 2003 - 08:58 #16
"dim Tid as long" skal selvfølgelig undenfor subben
og skriv Private foran alle subs
Avatar billede cyberspace Nybegynder
05. september 2003 - 09:02 #17
storbytossen>> du har stortset forstået havd det er jeg gerne vil have lavet.

Ja det skal være en del af et eksisterende program. Med programmet stopper mener jeg at, når jeg klikker start så køres en form for løkke og programmet stopper først når det er gået i nul.

Kort sakt - jeg har markeret x felter og klikker derefter start, så genererer programmet ud fra specificerede regler at der skal markeres flere felter ellser slettes. programmet stopper når der er 0 felter markeret og her stal stopuret automatisk stoppe
Avatar billede cyberspace Nybegynder
05. september 2003 - 09:03 #18
Beklager mine små stavefejl
Avatar billede juggalo Nybegynder
05. september 2003 - 09:11 #19
Lige et hurtigt indspark i denne tråd - hvis du skal bruge stopuret som et stopur (og nøjagtighed derfor er vigtig) så skal du IKKE bruge de indbyggede timere i VB - de er nemlig upræcise.... Du kan i stedet med fordel bruge computerens tick-count i stedet.
Avatar billede cyberspace Nybegynder
05. september 2003 - 09:18 #20
Jeg skal tage tid på hvorlang tid der går fra programmet starter og automatisk stopper.
Avatar billede lokespas Nybegynder
05. september 2003 - 09:21 #21
har du smidt "dim Tid as long" ud af Form_loaden, hvis det står derinde er "Tid" kun eksitererne i form load, den skal øverst oppe i dit modul, det er der for du for en fejl melding  i "Timer1_Timer"

og her er  tick-count
'In general section
Private Declare Function GetTickCount& Lib "kernel32" ()
Private Sub Form_Load()
    'KPD-Team 1998
    'URL: http://www.allapi.net/
    'E-Mail: KPDTeam@Allapi.net
    'Get the tickcount
    ret& = GetTickCount&
    MsgBox Str$(ret& / 60000) + " minutes."
End Sub
Avatar billede cyberspace Nybegynder
05. september 2003 - 09:39 #22
lokespas>> Dit foreslag funker desværre ikke/kan ikke bruges
Avatar billede themepark Nybegynder
05. september 2003 - 09:45 #23
Okay...jeg tager det her fra mit hoved, så jeg er ikke 100% sikker på om det vil virke, men here goes nothing:

Du har jo en event, når du trykker på Start knappen, noget i stil med Command1_Click, Start_Click eller hvad du har valgt at kalde din Start knap. Under den event skal de følgende 2 linjer være de første.

Timer1.Enabled=True
StartTid=Timer1.Timer

Så må du jo også have et sted, hvor du tjekker på om der er 0 felter markeret, og der hvor du tjekker det, skal du, såfremt der er 0 felter markeret, indføre de følgende 2 linjer.

Timer1.Enabled=False
Tid=Timer1.Timer-StartTid

Og så skal du naturligvis huske at deklarere variablerne aller øverst i dit kode vindue. Dvs.

Dim StartTid as Long
Dim Tid as Long

Jeg ved så ikke, om Long ville være det bedste, og jeg er sandt at sige en smule usikker på hvorvidt det i det hele taget har noget at gøre med en timer, når man skal lave dette...men jeg puslede selv med dette, da jeg i sin tid studerede Datalogi på HF, og det er den viden, jeg prøver at ihukomme nu ;-)

For øvrigt aner jeg slet slet ikke om Timerne er så upræcise, og om Tickcounts er bedre...så den del blander jeg mig slet ikke i ;)
Avatar billede lokespas Nybegynder
05. september 2003 - 09:48 #24
Hvad vil du egentlig have.. en færdig løsning???
Avatar billede martin_moth Mester
05. september 2003 - 10:05 #25
Hør nu her - det at bruge en timer og lave et stopur er altså ikke så kompliceret - hvad er der galt med de mange svar du allerede har fået?
Avatar billede themepark Nybegynder
05. september 2003 - 10:05 #26
Nej tak...personligt vil jeg hellere have en cola ;-)
Avatar billede themepark Nybegynder
05. september 2003 - 10:07 #27
martin_moth, jeg tror, det der er galt, dels at de åbenbart ikke har virket, dels at vi i starten har misforstået spørgsmålet.

Se hvad manden skrev 05/09-2003 09:02:32 :-)
Avatar billede cyberspace Nybegynder
05. september 2003 - 10:09 #28
storbytossen>> nu har jeg indsat tit kode forslag men den brokker sig over følg.

under command1_click
StartTid = Timer1.Timer (det er ordet Timer den brokker sig over)
Avatar billede martin_moth Mester
05. september 2003 - 10:10 #29
Stadigvæk - det derjer ig om at få startet og stoppet et stopur. Det er blevet forklaret helt korrekt. Hvor i hans kode han så vil starte og stoppe må han vel selv bedst kunne finde ud af..?

Nok om det, jeg skal ikek tilføje flere indlæg til en de mange der er i forvejen :-D

/Martin
Avatar billede martin_moth Mester
05. september 2003 - 10:10 #30
derjer ig  = drejer sig ( - er vi snart oppe på 30 indlæg ;o)
Avatar billede themepark Nybegynder
05. september 2003 - 10:12 #31
Såfremt din timer control faktisk HEDDER Timer1 (hvis den ikke gør det, kan det meget nemt være problemet ;-), ja, så formoder jeg lidt, det er fordi Timer slet ikke er en event eller hvad det korrekte ord nu er, for en Timer control, og i så fald, så rækker min hukommelse ikke længere :(
Avatar billede martin_moth Mester
05. september 2003 - 10:18 #32
Mht. timer kontrol - der er allerede forklaret hvordan den bruges. Læs evt. mere her: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vb98/html/vbobjTimer.asp

Og der er lidt mere her... www.eksperten.dk/kat/5?searchtype=txt&words=timer&method=and&sort=score&catid=5
Avatar billede martin_moth Mester
05. september 2003 - 10:19 #33
Avatar billede themepark Nybegynder
05. september 2003 - 10:20 #34
Hmm...jeg hader når der faktisk findes oversigter over den slags, men jeg ikke kan finde dem :-p

Og jeg er lige kommet i tanke om at Timer jo skal bruges som Timer1_Timer, altså som event...derfor er der ikke noget, der hedder Timer1.Timer...så det må være en anden metode, jeg har tænkt på :(
Avatar billede cyberspace Nybegynder
05. september 2003 - 10:20 #35
Måske kan i bedre fatte det hele, når i ser program koden, som den er på nuværende tidspunk.

storbytossen>> koden er indeholdende dine forslag (09:45:09)

Option Explicit
Dim StartTid As Long
Dim Tid As Long
Dim hvid, sort, blå As Long
Const bredde = 24
Private Sub Command1_Click()
  Timer1.Enabled = True
StartTid = Timer1.Timer
  If Command1.Caption = "Start" Then
    Command1.Caption = "Stop"
    Do While Command1.Caption = "Stop"
        Generation
        DoEvents
      Loop
    Else
      Command1.Caption = "Start"
    End If
End Sub

Private Sub Command2_Click()
MsgBox "LIV – Spil Forklaring: De otte felter omkring et givet felt kaldes feltets naboer - En brik, som har to eller tre nabobrikker overlever til næste generation - som har fire eller flere naboer, dør på grund af overbefolkning og bliver fjernet - En hver brik som kun har én nabo, dør af mangel på støtter - I et hvert tomt felt, som har tre – og kun tre- naboer, sker der en fødsel og der placeres en brik i næste generation"

End Sub

Private Sub Form_Load()
Dim lodret, vandret, feltID As Integer
  hvid = RGB(255, 255, 128)
  sort = RGB(0, 128, 0)
  blå = RGB(0, 0, 128)
      For lodret = 1 To bredde
    For vandret = 1 To bredde
    feltID = (lodret * bredde) + vandret
      Load lblFelt(feltID)
      lblFelt(feltID).Move lodret * _
      lblFelt(feltID).Width, _
      vandret * lblFelt(feltID).Height
      lblFelt(feltID).BackColor = sort
      lblFelt(feltID).Tag = False
      lblFelt(feltID).Visible = True
    Next
  Next
  End Sub

Private Sub lblFelt_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then  'Venstre Knap
    lblFelt(Index).BackColor = hvid
    lblFelt(Index).Tag = True
  End If
  If Button = 2 Then  'Højre knap
      lblFelt(Index).BackColor = sort
      lblFelt(Index).Tag = False
    End If
End Sub
Function FeltOverlever(lblID As Integer) 'Funktion header
Dim AntalLevendeNaboer As Integer
Dim ILiveNu As Integer
  ILiveNu = lblFelt(lblID).Tag = True
  AntalLevendeNaboer = 0
' Test de felter ovenover
If lblFelt(lblID - (bredde + 1)).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID - bredde).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID - (bredde - 1)).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
' Test de to felter på hver sin side af det aktuelle felt
If lblFelt(lblID - 1).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + 1).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
' Test de tre felter nedenunder
If lblFelt(lblID + (bredde - 1)).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + bredde).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
If lblFelt(lblID + (bredde + 1)).Tag = True Then _
  AntalLevendeNaboer = AntalLevendeNaboer + 1
'Funktion Retunerer True eller False
FeltOverlever = (ILiveNu And ((AntalLevendeNaboer = 2) _
  Or (AntalLevendeNaboer = 3))) _
  Or ((Not ILiveNu) And (AntalLevendeNaboer = 3))
End Function
Private Sub Generation()
Dim lodret, vandret, feltID As Integer
  'Tegn overlevende felter
  For lodret = 2 To (bredde - 1)
    For vandret = 2 To (bredde - 1)
    feltID = (lodret * bredde) + vandret
    lblFelt(feltID).BackColor = _
    IIf(FeltOverlever(feltID), hvid, sort)
    Next
  Next
  'opdater True-properties
  For lodret = 2 To (bredde - 1)
    For vandret = 2 To (bredde - 1)
      feltID = (lodret * bredde) + vandret
      lblFelt(feltID).Tag = _
        IIf(lblFelt(feltID).BackColor = hvid, True, False)
          Next
        Next
      End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
Tid = Timer1.Timer - StartTid
End Sub
Avatar billede themepark Nybegynder
05. september 2003 - 10:22 #36
Hmm...interessant...

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcttimer.asp

Det er godt nok for VBScript, men mon ikke det samme virker i Visual Basic?

cyberspace, prøv med StartTid=Timer i stedet for.

Hvis det virker, så behøver du slet ikke en Timer control, tror jeg :)
Avatar billede themepark Nybegynder
05. september 2003 - 10:24 #37
LOL...det der spil kender jeg godt :) Du har ikke tilfældigvis taget det fra en gul bog, cyberspace? :-)
Avatar billede martin_moth Mester
05. september 2003 - 10:31 #38
cyberspace: Ikke for at træde nogen over tæerne, men en god ide ville nok være at sætte sig godt ind i VB før man begynder at programmere. Der er masser af tutorials og bøger om emnet. Og nej, det er IKKE for at være belærende og spille smart, det er et oprigtigt velment råd - den tid der går med at sætte sig godt ind i VB kommer 10 gange igen når man programmerer, og ikke skal bruge en formiddag på at få fx. en timer til at virke...
Avatar billede cyberspace Nybegynder
05. september 2003 - 10:39 #39
storbytossen>> nej ikke fra en gul bog jeg har kigget i start med visualBasic 6.0 og er ved at lave nogle tilføjelser

martin moth>> jeg vil selvfølgelig give dig ret, har før arbejdet en del med VB men det er ved at være ret længe siden, så der er lige nogle elementer/ting jeg lige skal have genopfrisket
Avatar billede martin_moth Mester
05. september 2003 - 10:50 #40
Good luck :o)
Avatar billede themepark Nybegynder
05. september 2003 - 10:51 #41
cyberspace, såvidt jeg lige kan se, beder du den fortsætte imens Command1.Caption="Stop", men du tjekker ikke noget sted på hvorvidt Tag for alle dine labels er False, altså om du, som du nævnte, har opnået at der er 0 felter markeret...det vil resultere i en uendelig løkke...en lidt skidt ting ;)

Det, at du har sat

Timer1.Enabled = False
Tid = Timer1.Timer - StartTid

ind i Timer1_Timer, gør jo at hver gang Timer controllen udføres (dvs hvert sekund), så får du en Tid...og det er jo ikke meningen :)

Et eller andet sted skal du tjekke hvorvidt 0 af dine Tags er markeret, og hvis det er tilfældet skal du så angive denne linje

Tid = Timer - StartTid

Så vidt jeg har kunnet se, behøves Timer controllen slet ikke...den er jo sådan set også mere til at udføre en eller anden funktion eller lignende med et bestemt interval :)

Prøv de par ændringer :)
Avatar billede themepark Nybegynder
05. september 2003 - 10:55 #42
Selvfølgelig skal du også, der hvor du tjekker, om der er 0 felter markeret, huske at skrive

Command1.Caption="Start"

;)
Avatar billede cyberspace Nybegynder
05. september 2003 - 11:34 #43
storbytossen>> nå lige en sidste kommentar for nu. Efter at have foretaget nogle ændringer så har jeg stadig samme problem som jeg beskrev (10:09:22)

God Weekend folkens :-)
Avatar billede themepark Nybegynder
05. september 2003 - 11:45 #44
Også selvom du KUN skriver StartTid=Timer?
Avatar billede martin_moth Mester
05. september 2003 - 11:46 #45
Timer-kontrollen har ikke en property der hedder ".Timer"

Læs nu de links om Timer-kontrollen og prøv at lær hvordan den virker...

Du kan ALTID se hvilke methods, properties, ... et objekt eller en kontrol har ved at skrive kontrollen/objektets navn efterfulgt af et punktum. VB foreslår selv alle tilgængelige methods/properties... osv. Således kan du se, at der ikke findes en .Timer property på din kontrol...
Avatar billede themepark Nybegynder
05. september 2003 - 11:55 #46
martin_moth, jeg ved ikke om det er henvendt til mig eller til cyberspace, men uanset hvad.

Windows lader til at have en funktion, der kan bruges i VB, og som bare hedder Timer...og hvis det er tilfældet, behøver han som jeg også skrev 05/09-2003 10:51:38 slet ikke at bruge Timer controllen :)
Avatar billede martin_moth Mester
05. september 2003 - 12:15 #47
Lyder lækkert...

Jeg har i øvrigt lavet alle mine VB-programmer så der er en lille tæller, der hele tiden fortæller hvor lang tid programmet har været tændt - koden fylder 3 linier og bruger en timer, og min poiente er, at det kan betale sig lige at lære lidt om Timer-objektet før man forsøger at bruge det (henvendt til cyberspace, og stadig i den allermest venlige tone :o)
Avatar billede cyberspace Nybegynder
09. september 2003 - 09:04 #48
martin moth>> syntes lige at jeg vil nævne at jeg saktens kan lave og bruge en selvstændig timer funktion, ur/stopur ogl. Men denne timer her er lidt mere kompliceret at få til at funke

storbytossen>> da du er den der har kommet med det mest brugbare, så vil jeg tildele dig point, selv om jeg ikke har fået den ønskede funktion til helt at funke som jeg havde ønsket.

Der sker hvis ikke mere her så spm lukkes
Avatar billede themepark Nybegynder
10. september 2003 - 02:27 #49
Weeeeee....mine første optjente point :)

Mange tak :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester