Hej Søren
Du kan sagtens bruge en timer. I ontimer-eventet sætter du timer-intervallet
til det halve af den tid, der er tilbage inden aktivering(eller til et eller
andet maximunm), indtil intervallet er så lille at
du opnår den præcision, du har behov for. Noget i denne retning:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
If Now >= TimeSet then
begin
Timer1.Enabled := False;
// Aktiver.
end else
begin
if Timer1.Interval < MinInterval then // MinInterval er præcision
angivet i millisec.
Timer1.interval := Trunc((TimeSet - Now) * 60 * 60 * 24 * 1000);
Else
Timer1.Interval := Trunc((TimeSet - Now) * 60 * 60 * 24 * 1000) Div
2;
// Her kan du også angive et maximumsinterval.
end;
end;
Du kunne også bruge en tråd med sleep
Venlig hilsen
Søren Mikkelsen
"Søren Aaholm Møller" <swdata@image.dk> skrev i en meddelelse
news:gJcH7.2943$Gt.193228@news000.worldonline.dk...
> Hej, Peter
>
> Pænt efternavn du har der
Very close to mine
>
> Problemet ligger i at du har timeren liggende og køre (ustandsligt) og
> derved tage noget (i know - ikke meget) cpu-tid og hvad har vi. Det er der
> vel igen grund til...
>
> Jeg kunne forestille mig noget lignendende
>
> Procedure TForm1.CreateForm(Sender: TObject);
> Var
> TimeNow, TimeSet, TimeLeft: Integer;
> Begin
> TimeSet := Edit1.Text // 1900 ('alarm' sat til)
> TimeNow := TimeToStr(now) // 1700 (klokken er nu)
> // Pille kolon af så vi har dem som integers springer vi lige over \\
> *********'
> End;
>
> ******* -> Her en kode som udregner hvor mange sekunder der er fra kl.
17:00
> til kl. 19:00 - giver en timer antallet *1000 i interval - og herefter
> starter den...
>
> Burde sådan noget være muligt? - Og precisionsmæssigt realistisk?
>
> // Søren
>
> ----- Original Message -----
> From: "Peter Arnholm" <PeterArnholm@mail.dk>
> Newsgroups: dk.edb.programmering.pascal
> Sent: Saturday, November 10, 2001 2:47 PM
> Subject: Re: Nem løsning på tidsindstilling?
>
>
> > "Søren Aaholm Møller" <swdata@image.dk> skrev i en meddelelse
> > news:avTG7.1153$Gt.54080@news000.worldonline.dk...
> > > Hej,
> > >
> > > Jeg er igang med at lave et program som ekskveres når/hvis klokken
> bliver
> > > XX:XX
> > >
> > > Hvordan gøres det egentlig nemmest - hele funktionen funker nu - men
> > hvordan
> > > eksekveres den nemmest efter et bestemt tidspunkt?
> >
> > Jeg kan ikke se hvordan du kan undgå en timer for at aktivere din
> funktion.
> > Noget i stil med:
> > procedure TForm1.Timer1Timer(Sender: TObject);
> > begin
> > if Timetostr(time)=edit1.text then
> > Label1.Caption := 'Aktiveringen er startet';
> > end;
> > --
> > PA
> >
> <>
>
>