Avatar billede dilling-hansen Nybegynder
18. maj 2006 - 12:36 Der er 5 kommentarer og
1 løsning

Udregn Løn. (Timer * Timeløn)(TTime * Float)

Hvis jeg har en tid (TimerTid: TTime),
og en timeløn (KrTime: Float)...
Hvordan kan jeg så gange det sammen så
jeg får lønnen ialt (LonIalt: Float)?
Avatar billede stoney Nybegynder
18. maj 2006 - 12:59 #1
var
timer : integer;
timeloen : extended;
begin
timer := 8;
timeloen := 152.87;
showmessage(floattostr(timer * timeloen));

end;

Stoney
Avatar billede dilling-hansen Nybegynder
18. maj 2006 - 13:02 #2
som jeg skrev (måske lidt svært at forstå) så har jeg antal timer som TTime... dvs. det er som 00:00:00 og timeløn har jeg som Float eller String :S
Avatar billede hrc Mester
18. maj 2006 - 15:01 #3
Det er let nu hvor du bruger TTime:

function TimeSum(const aTimerTid: TTime; const aKrTime: double) : double;
var
  h, m, s, s100 : word
  mSum : integer;
begin
  DecodeTime(TimerTid, h,m,s,s100);
  mSum := h * 60 + m;
  result := KrTime * (mSum div 60); // Antal timer
  result := result + KrTime / 4 * ((mSum mod 60) div 15); // Antal kvarterer
end;

Lidt bagvendt at omregne det hele til minutter for derefter at regne det tilbage til timer og kvarterer, men jeg foretrækker at konvertere til en grundenhed og så tage det derfra.

I øvrigt kunne jeg have taget timelønnen og delt den op i en kvarterspris og derefter tage en KrKvarter * (mSum div 15), men jeg prøver at undgå afrundingsfejl.
Avatar billede tolderlund Nybegynder
18. maj 2006 - 15:56 #4
Undskyld jeg siger det, men efter min mening er det fuldstændig tosset at bruge TTime til dette.
TTime er beregnet til at indeholde et "tidspunkt", ikke et "antal timer".
Det er at voldtage TTime.
Der var meget bedre at bruge en integer til at indeholde antal timer eller minutter eller sekunder, efter hvad dit behov er.
Så er udregningen nemmere at lave, nemmere at forstå og nemmere at vedligeholde.
Jeg foreslår du laver dit designer om.
Avatar billede dilling-hansen Nybegynder
18. maj 2006 - 16:24 #5
hrc >> Tak for hjælpen det virker som det skal :)

tolderlund >> Men jeg skal regne ud hvor mange timer man nu har arbejdet... og det gør jeg ud fra en start tid og en slut tid... som man vælger i en DateTimePicker... og så har jeg tiden i en TTime...
Avatar billede hrc Mester
18. maj 2006 - 23:39 #6
Tolderlund: Jeg ser ikke noget galt i at bruge TTime (= TDateTime = double) hvor heltalsdelen er dage og decimaldelen er milisekunder siden kl. 12. Dejligt nemt at tælle timer sammen. Eneste minus er at decimaltal er en lillebitte smule tungere end heltal (det betød noget i 1980, men ikke nu hvor CPU og MPU er standard).

TTime kan snildt bruges til at indeholde tidspunkt og tidsrum. Jeg bruger selv TDateTime i et program til administration af logbøger (pilot/fly/start) og det virker fint. Samtidig får man en samling brugbare rutiner med. Jeg synes det fungerer elegant.

dilling-h: Tak for points.
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