Gå til innhold

få en timer til og vente mere enn 1 min.?


Anbefalte innlegg

Videoannonse
Annonse
Jeg skal ha timeren til og vente 181 sec mellom hver gang den skal gjøre det som står i den.

Men problemet er at det ikke går ann og få den til og vente mere enn 1 min!

 

Hva må jeg gjøre da?

 

VB6.

 

Prøv noe alla dette:

 

Dim TimerCount As Integer

Private Sub Form_Load()
tmrTimer.Interval = "1000"
End Sub

Private Sub tmrTimer_Timer()

TimerCount = TimerCount + 1

If TimerCount >= 181 Then
MsgBox "Det har gått " & TimerCount & " sekunder!"
TimerCount = 1
End If

End Sub

Endret av Merkoen
Lenke til kommentar
Jeg skal ha timeren til og vente 181 sec mellom hver gang den skal gjøre det som står i den.

Men problemet er at det ikke går ann og få den til og vente mere enn 1 min!

 

Hva må jeg gjøre da?

 

VB6.

 

Prøv noe alla dette:

 

Dim TimerCount As Integer

Private Sub Form_Load()
    tmrTimer.Interval = "1000"
End Sub

Private Sub tmrTimer_Timer()

TimerCount = TimerCount + 1

If TimerCount >= 181 Then
    MsgBox "Det har gått " & TimerCount & " sekunder!"
    TimerCount = 1
End If

End Sub

 

Hvor i denne koden skal jeg skrive funksjonen?

og skal jeg legge denne koden i en timer eller bare skrive det i koden?

Lenke til kommentar
Jeg skal ha timeren til og vente 181 sec mellom hver gang den skal gjøre det som står i den.

Men problemet er at det ikke går ann og få den til og vente mere enn 1 min!

 

Hva må jeg gjøre da?

 

VB6.

Jeg vet ikek om STATIC er et gyldig parameter i den VB'n du koder i, men hvis det er det så gjør du dette rimelig enkelt:

 

Du plasserer en TIMER med 1 sekund som avgrensning på vinduet og dobbeltklikker på den for å komme inn i Embeditoren, eller kode editoren om du vil. Gjør følgende:

 

dim MinTeller as static int
MinTeller = MinTeller + 1
if MinTeller >= 60
  MsgBox("Et minutt er gått")
  MinTeller = 0
Endif

Noen andre her kan sikkert hjelpe deg med STATIC

Lenke til kommentar
Hvor i denne koden skal jeg skrive funksjonen?

og skal jeg legge denne koden i en timer eller bare skrive det i koden?

Kode som inneholder Private Sub Form_Load() -og dermed alt det andre- skal i Form-modulen. Og form'en skal ha en timer som heter tmrTimer.

Static funker, noe annerledes enn beskrevet, men det er kosmetikk i forhold til at du har problemer med strukturen, vi tar det når resten funker hvis du vil.

Har Manfred ferie tro?

 

HTH. Beste hilsen Harald

Lenke til kommentar
Jeg skal ha timeren til og vente 181 sec mellom hver gang den skal gjøre det som står i den.

Men problemet er at det ikke går ann og få den til og vente mere enn 1 min!

 

Hva må jeg gjøre da?

 

VB6.

Jeg vet ikek om STATIC er et gyldig parameter i den VB'n du koder i, men hvis det er det så gjør du dette rimelig enkelt:

 

Du plasserer en TIMER med 1 sekund som avgrensning på vinduet og dobbeltklikker på den for å komme inn i Embeditoren, eller kode editoren om du vil. Gjør følgende:

 

dim MinTeller as static int
MinTeller = MinTeller + 1
if MinTeller >= 60
  MsgBox("Et minutt er gått")
  MinTeller = 0
Endif

Noen andre her kan sikkert hjelpe deg med STATIC

 

 

bfm68x.jpg

 

 

det kommer etter 60 sec!

 

 

 

EDIT: sånn ser koden ut nå!

 

Private Sub Timer1_Timer()

Static a As Integer

MinTeller = MinTeller + 1

if MinTeller >= 60

MsgBox ("Et minutt er gått")

MinTeller = 0

End If

Endret av lobfredd
Lenke til kommentar

// C syntaks
UINT_PTR SetTimer(		  HWND hWnd,
UINT_PTR nIDEvent,
UINT uElapse,
TIMERPROC lpTimerFunc
);

VOID CALLBACK TimerProc(		  HWND hwnd,
UINT uMsg,
UINT_PTR idEvent,
DWORD dwTime
);

BOOL KillTimer(		  HWND hWnd,
UINT_PTR uIDEvent
);

 

Disse funksjonene kan brukes.

Denne timeren blir lagt i Windows Message Queue, så den er ikke trådavhengig.

 

f.eks.

 

Public Declare Function SetTimer Lib "user32" (hWnd As Long, nIDEvent As Long, uElapse As Long, lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (hWnd As Long, nIDEvent As Long) As Boolean

Public Sub Form_Load()
 SetTimer Me.hWnd, 1, 181000, AddressOf TimerTick
End Sub
Public Sub TimerTick(msg As Long, idEvent As Long, dwTime As Long)
 ' Gjør noe her
End Sub

Lenke til kommentar
Bytt a med minteller:

Static MinTeller As Integer

 

eller allerhelst som Long:

Static MinTeller As Long

 

HTH. beste hilsen Harald

 

 

funket ikke måtte fjerne noen tegn fra koden så funket den!

 

Private Sub Timer1_Timer()

Static MinTeller As Long

MinTeller = MinTeller + 1

MinTeller = 60

MsgBox ("Et minutt er gått")

MinTeller = 0

End Sub

Lenke til kommentar
Bytt a med minteller:

Static MinTeller As Integer

 

eller allerhelst som Long:

Static MinTeller As Long

 

HTH. beste hilsen Harald

Pirkete, men hvorfor er LONG bedre en Integer? I dette tilfellet hadde jo t.o.m. en BYTE vært tilstrekkelig da tallet aldri blir høyere en 60

Lenke til kommentar

VB (altså klassisk gammel) konverterer integer til long -dette har noe med overgangen fra 16 til 32bit en gang i tiden. Noe performanceproblem er så vidt jeg vet bare i runtimekompilering, som i VBA. Finner ikke artikkelen om dette, MSDN har reorganisert seg 5 ganger siden dette var aktuelt stoff.

 

Pirk i høyeste grad, men å holde seg til Long og Double har litt med gode vaner å gjøre. Færre sjanser for overflow og færre avrundingsfeil som flyttallet Single gjerne innfører.

 

Opprinnelig innlegg sier "Jeg skal ha timeren til og vente 181 sec", så 60 er vel litt snaut ;)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...