Permalänk
Medlem

[Delphi] En gång per minut

Jobbar på alarmfunktionen för ShirusuPad, och kom att tänka på en sak...

Hur kan jag vara säker på att en viss sak händer en gång per minut? Om jag sätter en timer på 60 sekunder, och den startas vid tiden 16:04:59 (altså, ~5 minuter över 4), är det då garanterat att timern kommer att slå igen 16:05:59? Eller finns risken att den blir försenad, och att den hoppar över tidpunkten 16:05:59, och istället slår på 16:06:00?

Jag tror inte att timern i Delphi är tillräckligt exakt, och eftersom man ställer in tiden för alarmet med minutprecision, finns altså en chans att vissa alarm inte kommer att exekveras.

Jag kan sammtidigt inte sätta timern till mindre värde än 60 sekunder, eftersom det då finns chans att den slår fler gånger per minut.

Några förslag?

Visa signatur
Permalänk
Medlem

disabla timern efter alarmet har ljudit så är problemet löst!

Permalänk
Medlem

Timern är global, och ska ständigt kolla efter nya alarm, så den måste vara igång hela tiden...

Visa signatur
Permalänk
Medlem

jag förstår inte riktigt!?
vill du alltså utföra nånting varje minut eller vill du utföra nått vid ett visst klockslag?

Permalänk

"och eftersom man ställer in tiden för alarmet med minutprecision"

gör så att timern går, säg 60 ggr per sekund som den gör nu, men bara kollar om det är "rätt minut", dvs att ett larm ska gå igång, då kör den igång alarmet samt sätter en flagga som säger att detta alarmet nu har gått, nästa sekund den kollar märker den ju att flaggan är satt och kör inte alarmet igen.

och om alarmet skall gå varje dag vid samma minut kan du göra så att ifall den inte hittar något alarm som ska köras på den minuten så sätter den tillbaks flaggan.

Visa signatur

Microsoft Longhorn operating system is going to be Windows Vista. As in “a view into the distance” which surely refers to the prolonged development timeline of the OS

Permalänk
Medlem

Jag vill utföra något vid "varje" klockslag, dvs vid varje minut.

Jag vill att något ska hända 16:05, 16:06, 16:07 osv. Och jag vill vara säker på att inget klockslag (åter igen, med minutprecision) ska missas.

Visa signatur
Permalänk
Medlem
Citat:

Ursprungligen inskrivet av turbonallen
"och eftersom man ställer in tiden för alarmet med minutprecision"

gör så att timern går, säg 60 ggr per sekund som den gör nu, men bara kollar om det är "rätt minut", dvs att ett larm ska gå igång, då kör den igång alarmet samt sätter en flagga som säger att detta alarmet nu har gått, nästa sekund den kollar märker den ju att flaggan är satt och kör inte alarmet igen.

och om alarmet skall gå varje dag vid samma minut kan du göra så att ifall den inte hittar något alarm som ska köras på den minuten så sätter den tillbaks flaggan.

Javist, en flagga skulle ju fungera, men jag tänkte att det är onödigt att kollen ska genomföras flera gånger per minut, när det räcker med en. Men jag får väl köra så, i brist på annat.

Visa signatur
Permalänk

kör på min metod då, den kollar bara det första, dvs: "16:05" inte sekundrarna, sedan ifall den har kört en grej vid "16:05", så står ju det i "SistaSkitenJagKörde"-variabeln, när den sedan kollar vid "16:06" så märker den att "SistaSkitenJagKörde"-variabeln inte stämmer, den kör skiten, och ändrar variabeln

EDIT: det räcker om du kollar 2-3 ggr per minut, men fler än en måste du ha för att vara säker. (om nu inte timern skulle vara ruggigt precis)

Visa signatur

Microsoft Longhorn operating system is going to be Windows Vista. As in “a view into the distance” which surely refers to the prolonged development timeline of the OS

Permalänk
Medlem

Hmm, jag tror jag fattar vad du menar... återkommer annars..

Visa signatur
Permalänk
Medlem

Annars kan du ju alltid använda en multimedia timer

Visa signatur

www.filipsprogram.tk - lite freeware
"Delight, herregud. Talang är bara förnamnet."