lobfredd Skrevet 25. mai 2008 Del Skrevet 25. mai 2008 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. Lenke til kommentar
Merko Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 (endret) 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 26. mai 2008 av Merkoen Lenke til kommentar
lobfredd Skrevet 26. mai 2008 Forfatter Del Skrevet 26. mai 2008 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
GeirGrusom Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 (endret) En kan også lage en egen timer med Timer funksjonen. edit: Nei, det funker ikke, VB6 støtter ikke multi-threading i utgangspunktet. Prøv deg på Windows API-et for timere. Endret 26. mai 2008 av GeirGrusom Lenke til kommentar
HDSoftware Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 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
Harald Staff Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 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
Harald Staff Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 Så bra. Ikke at det er noe galt med ferie heller. Lenke til kommentar
GeirGrusom Skrevet 26. mai 2008 Del Skrevet 26. mai 2008 Det heter "static dim a As Integer" eller så var det bare "Static a As Integer" Lenke til kommentar
lobfredd Skrevet 27. mai 2008 Forfatter Del Skrevet 27. mai 2008 (endret) 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 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 27. mai 2008 av lobfredd Lenke til kommentar
Harald Staff Skrevet 27. mai 2008 Del Skrevet 27. mai 2008 Bytt a med minteller: Static MinTeller As Integer eller allerhelst som Long: Static MinTeller As Long HTH. beste hilsen Harald Lenke til kommentar
GeirGrusom Skrevet 27. mai 2008 Del Skrevet 27. mai 2008 // 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
lobfredd Skrevet 27. mai 2008 Forfatter Del Skrevet 27. mai 2008 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
HDSoftware Skrevet 28. mai 2008 Del Skrevet 28. mai 2008 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
Harald Staff Skrevet 28. mai 2008 Del Skrevet 28. mai 2008 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
lobfredd Skrevet 28. mai 2008 Forfatter Del Skrevet 28. mai 2008 Lurer bare på en ting til! Hvor skal koden stå? om jeg setter den i timeren er det akkuratt som om den ikke skulle vært der! Lenke til kommentar
Harald Staff Skrevet 28. mai 2008 Del Skrevet 28. mai 2008 Dette må du forklare nærmere. Lenke til kommentar
lobfredd Skrevet 28. mai 2008 Forfatter Del Skrevet 28. mai 2008 Dette må du forklare nærmere. Jeg lager en timer og setter den til 60000 interval. skriver koden du ga meg inn i timeren og setter den på 181. det er akkuratt som timeren ikke bryr seg om koden du ga meg. Lenke til kommentar
Degeim Skrevet 28. mai 2008 Del Skrevet 28. mai 2008 Da venter den 181*60000 millisekunder, altså 181 minutter. Sett intervallet til 1000. Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå