Avatar billede hadaps Nybegynder
05. april 2004 - 23:42 Der er 11 kommentarer og
1 løsning

nedtælling til indtastet tidpunkt

Hvordan kan man lave en nedtælling, som tæller ned til et bruger indtastet tidspunkt?

hvis fx brugeren taster 05:00:00
og klokken er 21:00:00, skal den starte en nedtælling som viser tiden tilbage
Dvs. at den skal tage højde for, at det godt kan krydse midnat
Avatar billede doc404 Novice
06. april 2004 - 00:44 #1
En Label (Label1), en Edit (edEndTime), en Button (btnStart) og en Timer (Timer)...

procedure TForm1.btnStartClick(Sender: TObject);
begin
  EndTime := StrToDateTime(edEndTime.Text);
  Timer.Enabled := True;
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
  if Frac(Now) > EndTime then
    Label1.Caption := FormatDateTime('hh:nn:ss',1 - (Frac(Now) - Frac(EndTime)))
  else
    Label1.Caption := FormatDateTime('hh:nn:ss',Frac(EndTIme) - Frac(Now))
end;
Avatar billede hadaps Nybegynder
06. april 2004 - 01:03 #2
Den duer ikke helt....

Hvis man sætter det ene tidspunkt til 21:00:00, og det andet til 03:00:00
så skriver den at forskellen er 18:00:00 - og det passer jo ikke helt - det er jo 6:00:00
Avatar billede doc404 Novice
06. april 2004 - 01:11 #3
Hvis mig lige hele din kode... I mit eks. er der kun et tidspunkt at sætte - sluttidspunktet
Avatar billede hadaps Nybegynder
06. april 2004 - 01:20 #4
Jeg har brug for, at begge tidspunkter er noget jeg indtaster

procedure TMainform.BtnStartDelayClick(Sender: TObject);
var
Tid1,tid2: Tdatetime;
begin

If RadioWhishDone.Checked = true Then
Begin
Tid1 := strtotime('03:00:00');
tid2 := strtotime('21:00:00');

if Frac(tid1) > tid2 then
  Label3.Caption := FormatDateTime('hh:nn:ss',1 - (Frac(tid1) - Frac(tid2)))
else
  Label3.Caption := FormatDateTime('hh:nn:ss',Frac(tid2) - Frac(tid1));

label3.Caption := datetimetostr(datetimediff(tid1,tid2));
End;
Avatar billede hadaps Nybegynder
06. april 2004 - 01:20 #5
har prøvet at bytte om på tid1 og tid2 - men det giver samme resultat
Avatar billede doc404 Novice
06. april 2004 - 01:26 #6
Jamen, så er forudsætningerne jo lidt anderledes...

Skal det så forstås, at hvis du taster '22:00' i starttid og '23:00' i sluttid, så skal der ligegyldigt hvad kl. ellers er tælles 1:00,0:59 etc?
Avatar billede hadaps Nybegynder
06. april 2004 - 01:29 #7
yeps
Avatar billede hadaps Nybegynder
06. april 2004 - 01:30 #8
og start = 23:00:00, slut = 01:00:00
så skal der tælles:
2:00:00 .. 1:59:59 .. 1:59:58 ......
Avatar billede doc404 Novice
06. april 2004 - 01:52 #9
Denne skulle virke...

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Timer: TTimer;
    edEndTime: TEdit;
    btnStart: TButton;
    Label1: TLabel;
    edStartTime: TEdit;
    procedure btnStartClick(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
  private
    { Private declarations }
    EndTime : TDateTime;
    TimeDiff : TDateTime;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnStartClick(Sender: TObject);
var
  StartTime,EndTime : TDateTime;
begin
  StartTime := StrToTime(edStartTime.Text);
  EndTime := StrToTime(edEndTime.Text);
  if StartTime > EndTime then
    TimeDiff := (1 - (StartTime - EndTime)) + Now
  else
    TimeDiff := (EndTime - StartTime) + Now;
  Timer.Enabled := True;
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
  Label1.Caption := FormatDateTime('hh:nn:ss',TimeDiff - now);
end;

end.
Avatar billede doc404 Novice
06. april 2004 - 01:53 #10
Altså du beregner tidsforskellen mellem dit start og sluttidspunkt. Denne ligger du til kl. NU og så er det en simpel ting at tælle ned..
Avatar billede hadaps Nybegynder
06. april 2004 - 09:47 #11
takker du... Så virker det :D
Avatar billede doc404 Novice
06. april 2004 - 12:15 #12
:-)
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