Avatar billede robertmp Nybegynder
28. september 2006 - 12:44 Der er 7 kommentarer

Dates and timers. Forskel mellem 2 dates skal sætte timer

Har rodet mig ud i noget timer halløj
Når min timer oprettes har jeg en funktion der tager tager en TDateTime med ind.

Min timer.OnTimer skal så gerne fyre af når klokken bliver MinDateTime.

Hvordan får jeg fikset det?
Avatar billede martinlind Nybegynder
28. september 2006 - 12:47 #1
if MinDateTime >= Now then
begin
  // din kode
end;
Avatar billede martinlind Nybegynder
28. september 2006 - 12:48 #2
Der er mange date time funktioner i DateUtils unit'en
Avatar billede robertmp Nybegynder
28. september 2006 - 13:21 #3
Jeg prøver lige igen..

Eksempel:
Lad os sige jeg har:
En gruppe radiobutton til at vælge ugedage (mandag, tirsdag....sundag)
To edit felter. 1 time time og 1 til minut.

Så en bruger kan f.eks vælge mandag 14:30.
Dette skal nu laves om til et timerinterval sådan at timeren fyrer eventet af den førstkommende mandag kl. 14:00:00
Avatar billede martinlind Nybegynder
28. september 2006 - 14:09 #4
Jeg prøver lige igen..

DateUtils unit'en, har masser af func. til det formål, så kig du i den :)
Avatar billede kroning Nybegynder
28. september 2006 - 14:10 #5
Du kan benytte funktionen MilliSecondsBetween i DateUtils uniten til at findes antal milisekunder indtil den ønskede dato/tid og sætter så din Timer.Interval til dette, bemærk at du kun kan benytte dette hvis OnTimer skal fyres af inden der er gået 49,7 døgn.
Avatar billede robertmp Nybegynder
28. september 2006 - 14:35 #6
Det lykkedes da til sidst. Har Delphi 5 så ingen DateUtils. Lykkedes mig dog at finde koden og hive den ud

              function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;
              begin
                if ANow < AThen then
                  Result := AThen - ANow
                else
                  Result := ANow - AThen;
              end;

              function MilliSecondSpan(const ANow, AThen: TDateTime): Double;
              begin
                Result := MSecsPerDay * SpanOfNowAndThen(ANow, AThen);
              end;

              function MilliSecondsBetween(const ANow, AThen: TDateTime): Int64;
              begin
                Result := Trunc(MilliSecondSpan(ANow, AThen));
              end;
Avatar billede hrc Mester
05. oktober 2006 - 14:33 #7
Du kan også bare generere tidspunktet hvor det skal ske, og så lade en timer tjekke det hvert sekund. Det er ikke noget der kan mærkes:

procedure OnTimerTick(Sender : TObject);
begin
  if (fExecuteDate <> 0.0) and (fExecuteDate >= now) then
  begin
    DoIt;
    fExecuteDate := 0.0; // eller Timer1.Enabled := false;
  end;
end;

Hvis man en onsdag vælger mandag, er det så mandag i næste uge?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester