Avatar billede claus_w Nybegynder
05. maj 2001 - 21:01 Der er 5 kommentarer og
1 løsning

Udregning af minutter mellem to tider

Til udregning af antallet af minutter mellem to tider har jeg følgende forsøgt mig med følgende:

// Antallet af minutter mellem de to tider udregnes
procedure TLogForm.StartTidChange(Sender: TObject);
begin
  if (StartTid.Text = \'\') then StartTid.Text := \'00:00:00\';
  if (SlutTid.Text = \'\') then SlutTid.Text := \'00:00:00\';
  DTid.Text := IntToStr(HourDiff(StrToTime(StartTid.Text),StrToTime(SlutTid.Text)));
end;


med disse funktioner:


function Hours(Time: TDateTime): integer;
var
  H, M, S, MS: word;
begin
  DecodeTime(Time, H, M, S, MS);
  result := H;
end;

function HourDiff(Beginning: TDateTime; Ending:TDateTime): integer;
begin
    Result := Hours(Ending - Beginning);
end;


Problemet er at lige meget hvilken to tider jeg sætter ind resultere Dtid.Text med et 0. Men jeg kan virkelig ikke se hvorfor.

Avatar billede nico26 Nybegynder
05. maj 2001 - 21:52 #1
Det virker fint, men hvid det er minutterne du er interesseret i skal du nok skrive:

DecodeTime(Time, H, M, S, MS);
result := M;
Avatar billede claus_w Nybegynder
05. maj 2001 - 22:05 #2
nå, ja... det var jo lidt dumt...

Det må du undskylde.. er ved at blive lidt træt :(

men tak, da..
Avatar billede nico26 Nybegynder
05. maj 2001 - 22:07 #3
det skal selvfølgelig være Result := M + (60 * H);

ellers kan det være fordi du dit starttidspunkt er større end sluttidspunktet, så bliver det et negativt resultat, og DecodeTime vil returnere 4 nuller
Avatar billede martinlind Nybegynder
05. maj 2001 - 23:09 #4
Hvorfor ikke bare trække de to datetime fra hindanden, TDateTime type er lavet så du kan regne med den.
Avatar billede nico26 Nybegynder
05. maj 2001 - 23:10 #5
martinlind>> det gør han da også: Result := Hours(Ending - Beginning);
Avatar billede martinlind Nybegynder
06. maj 2001 - 10:15 #6
Ja, men ligefrem to functioner, Heltals delen er dage, komma delen minuter, så behøver man da ikke decodeTime, kunne man så ikke bare gøre :

Frac(Ending - Beginning) div 60;


Bare et foreslag.
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