Avatar billede dilling-hansen Nybegynder
14. august 2008 - 00:02 Der er 4 kommentarer og
1 løsning

Udregne arbejdstid - frokost problemer

Nogen der kan se hvorfor det her ikke virker, nu har jeg prøvet at rode rundt med det, men Tid2 bliver hele tiden et eller andet tal, som jeg ikke ved hvordan den kommer frem til :\


procedure UdregnDag(ModtTid, GaetTid, FrokTid: TTime; Tid1, Tid2: TLabel);
var
  tmp: String;
begin
  DateTimeToString(tmp,'HH:mm',GaetTid - ModtTid);
  Tid1.Caption := tmp;

  DateTimeToString(tmp,'HH:mm',(GaetTid - ModtTid) - FrokTid);
  Tid2.Caption := tmp;
end;

procedure TForm1.btnUdregnClick(Sender: TObject);
begin
  UdregnDag(dtpMan1.Time,  dtpMan2.Time,  dtpManF.Time,  lblMan1,  lblMan2);
  UdregnDag(dtpTirs1.Time, dtpTirs2.Time, dtpTirsF.Time, lblTirs1, lblTirs2);
  UdregnDag(dtpOns1.Time,  dtpOns2.Time,  dtpOnsF.Time,  lblOns1,  lblOns2);
  UdregnDag(dtpTors1.Time, dtpTors2.Time, dtpTorsF.Time, lblTors1, lblTors2);
  UdregnDag(dtpFre1.Time,  dtpFre2.Time,  dtpFreF.Time,  lblFre1,  lblFre2);
end;
Avatar billede arne_v Ekspert
14. august 2008 - 02:13 #1
Hvad skal:
  tidsforskel - tidspunkt
give ?
Avatar billede borrisholt Novice
14. august 2008 - 08:06 #2
jeg forstår ikke helt dit regne stykke

Der her der virker i hvertfald :

procedure UdregnDag(Const WorkArrive, WorkDeparture, LuncArrive, LunchDeparture : TTime; var WorkHours, LunchHours : TTime);
begin
  LunchHours := LunchDeparture - LuncArrive;
  WorkHours := WorkDeparture - WorkArrive - LunchHours;
end;

procedure TForm20.FormCreate(Sender: TObject);
var
  WorkArrive, WorkDeparture, LuncArrive, LunchDeparture, WorkHours, LunchHours : TTime;
begin
  WorkArrive := StrToTime('08:00');
  WorkDeparture := StrToTime('16:00');
  LuncArrive := StrToTime('12:00');
  LunchDeparture := StrToTime('12:30');
  UdregnDag(WorkArrive, WorkDeparture, LuncArrive, LunchDeparture, WorkHours, LunchHours);
  Label1.Caption := 'Arbejdstid : ' + TimeToStr(WorkHours);
  Label2.Caption := 'Frokosttid : ' + TimeToStr(LunchHours);
end;

Jens B
Avatar billede dilling-hansen Nybegynder
14. august 2008 - 22:27 #3
vil gerne have det sådan at man skal indtaste 3 tal, mødt tid, gået tid, og så hvor lang tid man har holdt frokost, men når jeg prøver det så, kommer den tilbage med nogen mærkelige tal :\
når jeg fx går sådan her med dit eks :\ jeg ville da mene det skulle virke på samme måde  :(

procedure UdregnDag(Const WorkArrive, WorkDeparture, LunchTime: TTime; var WorkHours, LunchHours : TTime);
begin
  LunchHours := LunchTime;
  WorkHours := WorkDeparture - WorkArrive - LunchHours;
end;

procedure TForm20.FormCreate(Sender: TObject);
var
  WorkArrive, WorkDeparture, LunchTime, WorkHours, LunchHours : TTime;
begin
  WorkArrive := StrToTime('08:00');
  WorkDeparture := StrToTime('16:00');
  LunchTime := StrToTime('00:30');
  UdregnDag(WorkArrive, WorkDeparture, LunchTime, WorkHours, LunchHours);
  Label1.Caption := 'Arbejdstid : ' + TimeToStr(WorkHours);
  Label2.Caption := 'Frokosttid : ' + TimeToStr(LunchHours);
end;
Avatar billede borrisholt Novice
15. august 2008 - 09:01 #4
Dit problem ligger ikke i den kode du har postet her... Jeg har lige lavet et nyr projekt og kopieret koden, det fungerer perfekt.

I øvrigt kan du gøre sådan her med LunchTime i stedet for :
LunchTime := 0.5 / HoursPerDay;

Jens Borrisholt
Avatar billede dilling-hansen Nybegynder
18. august 2008 - 23:02 #5
kan det have noget at gøre med at jeg bruger DateTimePicker?
for den her virker:
UdregnDag(WorkArrive, WorkDeparture, LunchTime, WorkHours);

Men det gør den her ikke:
UdregnDag(dtpMan1.Time, dtpMan2.Time, dtpManF.Time, WorkHours);

men indholdet er det samme? :\ mødt 08:45, gået 17:15, frokost 00:30. den første giver 08:00, og den anden giver 16:00 :\
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