Hej! Sätt in en timer och ställ in intervallen Hej, om du inte behöver vara exat i ditt räknande så kan du köra timerfunktionen. Hmm..I timer intervallen kan jag sätta 60000, men hur gör man för att den ska lägga upp en msg efter 1 timme? Det är enklare att att spara när du vill att MsgBox'en ska komma upp. Så kontrollerar du med timmer om tidpunken har inträffat. Om om du nu vill vara mer exakt, samt om ingenting annat betungande är på G: Inte bra att belasta datorn med en sådan loop. Men du kan ju kombinera det båda teknikerna: Hej, jag undrar om min lilla kodsnurra är sämre på nått sätt? Eftersom timmerin inte är exakt på något vis. Så kommer skillnaden öka hela tiden. Helst om datorn går trögt och programmet behandlar många meddelanden i fönsterkön. Ok, bra att veta även om jag dock påpekade detta för herren med frågan:-))))En räknare...
Jag vill ha en räknare i min lilla applikation som när applikationen öppnas så har jag tex en variabel som plusar med sig själv var 60 sekund. Och när applikationen har varit igång i en timme så ska jag lägga upp en msgbox?
Hur skulle detta gå till?
Tacksam för hjälp...Sv: En räknare...
skriv detta i timern.
<code>
Private Sub Timer1_Timer()
msgbox ("texten i boxen")
End Sub
</code>
Hoppas detta löste problemetSv: En räknare...
sätt den på intervall=60000(en minut CIRKA)
i den lägger du en variabel som plussar med 1, när den kommer upp i 60 har du en timme.
<code>
'i timern.
Static timme As Integer
timme = timme + 1
If timme = 60 Then MsgBox "Nu är det en timme": timme = 0
</code>Sv: En räknare...
Sv: En räknare...
Om du bara ska göra det en gång. Skriver du:
<code>
Private mTimeOut As Date
Private Sub Form_Load()
mTimeOut = DateAdd("h", 1, Now)
Timer1.Interval = 1000
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Now() >= mTimeOut Then
MsgBox "Det har gått en timme sedan programmet startat!"
Timer1.Enabled = False
End If
End Sub
</code>
Vill du att MsgBox'en säger till varje timme skriver du istället:
<code>
Private mTimeOut As Date
Private Sub Form_Load()
mTimeOut = DateAdd("h", 1, Now) 'Om du int vill visa msgbox vid start
Timer1.Interval = 500
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If Now() >= mTimeOut Then
mTimeOut = DateAdd("h", 1, Now)
MsgBox "Det har gått en timme!"
End If
End Sub
</code>Sv: En räknare...
Public Declare Function GetTickCount Lib "kernel32" () As Long
Private mlngTicCount as Long
Private Sub Form_Load()
mlngTicCount = GetTickCount()
End Sub
' Och någonstans när uppstarten av App'en är klar:
Do While GetTickCount() - mlngTicCount <= x ' där x är antalet millisekunder i ditt tidsintervall
DoEvents
LoopSv: En räknare...
<code>
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private mTimeOut As Long
Private Sub Form_Load()
mTimeOut = GetTickCount() + 60000
Timer1.Interval = 500
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If GetTickCount() >= mTimeOut - 600 Then
Do While mTimeOut > GetTickCount()
DoEvents
Loop
Timer1.Enabled = False
MsgBox "Det har gått en timme!"
End If
End Sub
</code>
Får man ökad noggranhet utan att stjäla all tillgänglig datorkraft i en timme. Sv: En räknare...
Bara undrar för min kod är så liten. Kan det bli fel?
Ska kanske ha en DoEvents med i den iaf?
/BennySv: En räknare...
Det är därför det är mer noggrant att använda en räknare från systemet.Sv: En räknare...