
Delphi - time
Zdravím
Proč to nefunguje
begin
time1 := time;
time2 := StrToTime('09:45:00');
Label1.Caption:= TimeToStr(time1);
Label2.Caption:= TimeToStr(time2);
If time1 = time2 Then ShowMessage('shoda')
end;
Tak je 10:34:00
time2 := StrToTime('10:40:00');
V 10:40:00 by mněl vyskočit ShowMessage('shoda')
Čas obsahuje i milisekundy. Trefíš se přesně do milisekundy?
Tak proč mi delphi neukaže celý čas i s těma milisekundami ve watches?
timer.png
Moc v tom neumí.
Mněli jsme to na střední před 15 roky.
time1 := time;
Jak dostanu do toho time1 ten čas bez těch milisekund?
Pamatují že na to byl přikaz format
Nechces radeji napsat, co chces dosahnout?
Pokud to ma byt budik, staci, kdyz budes testovat zda Zadany_cas >= Time();
Po kladnem otestovani pak nastavis promennou, ze udalost probehla.
Jinak jako alternativni postup samozrejme muzes oriznout ms z aktuálního času pred testováním, ale pak se časy budou shodovat celou sekundu a ty zase musíš řešit to, že tebou požadovaná událost již proběhla.
Nebo můžeš testovat, zda aktuální čas je mezi zadaným časem a zadaným časem + 999ms
A že ti to ve Watch neukáže? Jaký formát sis při zobrazení dal? Pokud řetězec, tak to převede pomocí formátu. Zkus tam dát třeba desetinné číslo
Ono to poběží na lazarusu - linux - raspberý
Pokud se shoduje, zapní pin.
Toto bych rad.
Jak to ořiznout?
Ono by mnělo stačit nastavít timer na 1000, což je jedna vteřina, ne?
A jak zajistíš, aby timer začal přesně s nulovymi ms?
Proč teda jednoduše neotestuješ, jestli není aktuální čas v rozsahu 10:16:00 - 10:16:00.999 ?
Na oriznuti muzes pouzit napr. funkce DecodeTime / EncodeTime
Jednodussi cesta je pouziti funkce:
RecodeMilliSecond(const AValue: TDateTime; const AMilliSecond: Word)
Pomoci ni vynulujes ms v aktualnim case a muzes porovnavat.