Para Amigos que entende!! (Data,Horas e Minuto X Valor R$ )

Delphi

24/08/2003

[b:873b4a619d]procedure TForm1.Button1Click(Sender: TObject);
VAR
DTE, DTS, DTT: TDATE;
HRE,HRS,HRT: TTIME;
VLHR,HRSEG,HRMIN,HRPG: REAL;
BEGIN
DTE:=STRTODATE(mskedDataEntrada.Text);
DTS:=STRTODATE(mskedDataSaida.Text);
HRE:=STRTOTIME(mskedHoraEntrada.Text);
HRS:=STRTOTIME(mskedHoraSaida.Text);
VLHR:=STRTOFLOAT(edValoHora.Text);
IF DTE > DTS THEN
BEGIN
MESSAGEDLG(´A data de entrada não pode ser maior que a data de saída!´,mterror,[mbok],0);
EXIT;
END;
IF DTE = DTS THEN
IF HRE > HRS THEN
BEGIN
MESSAGEDLG(´A hora de entrada não pode ser maior que a hora de saída!´,mterror,[mbok],0);
EXIT;
END
ELSE
HRT := HRS - HRE;
IF DTE < DTS THEN
BEGIN
DTT := DTS - DTE;
HRT := (STRTOTIME(´23:59:59´)-HRE)+HRS;
END;
HRSEG := STRTOINT(COPY(TIMETOSTR(HRT),7,2));
HRMIN := STRTOINT(COPY(TIMETOSTR(HRT),4,2));
HRPG := STRTOINT(COPY(TIMETOSTR(HRT),1,2));
IF (HRSEG <> 0) OR (HRMIN <> 0) THEN
HRPG := HRPG+1;
IF DTT >= 1 THEN
IF HRE < HRS THEN
BEGIN
lblHoras.Caption := FLOATTOSTR(DTT)+´ Dia(s) e ´+TIMETOSTR(HRT)+´ hora(s)´;
lblHoraPaga.Caption := FLOATTOSTR(((DTT*24)*VLHR)+(HRPG*VLHR))+´ reais´;
END
ELSE
BEGIN
lblHoras.Caption := FLOATTOSTR(DTT-1)+´ Dia(s) e ´+TIMETOSTR(HRT)+´ hora(s)´;
lblHoraPaga.Caption := FLOATTOSTR((((DTT-1)*24)*VLHR)+(HRPG*VLHR))+´ reais´;
END
ELSE
BEGIN
lblHoras.Caption := TIMETOSTR(HRT)+´ hora(s)´;
lblHoraPaga.Caption := FLOATTOSTR(HRPG*VLHR)+´ reais´;
END;
END;

Esta função acima calcular o intervalo entre (Duas Data) e (Duas Horas).....com resultado do intervalo entre as (Datas e Horas ) e multiplicado pôr um Valor Fixo.......

Exemplo ........................

mskedDataEntrada.Text = 22/08/2003
mskedDataSaida.Text = 22/08/2003

mskedHoraEntrada.Text = 10:00
mskedHoraSaida.Text = 11:30

edValoHora.Text = 5,00

Digitando estes valores acima o Resultado da (Hora) esta correto .......mas o resultado a (Pagar) em “Reais&8221; da um Error pois arredonda os Minutos para Hora..............Veja como fica

1: 30 horas
10 reais

...........Como que eu faço para calcular os Minutos também ?? Quero que os resultado ficassem assim............

1:30 horas
7,50 reais [/b:873b4a619d]


Jairo-go

Jairo-go

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

24/08/2003

Jairo,
Quando vc trabalha com hrs deve transformar sempre para a menor unidade... no seu caso minutos...
ex : vc paga R$ 5 por hora então são 0,8333333... por minuto... (dividi 5 por 60)
vc transforma cada hora em minutos, multiplicando por 60... depois pega os minutos...
no seu caso 1:30 minutos são 60 min + 30 minutos = 90 min * 0,8333333333 = R$ 7,50...
a mesma regra se aplicaria se vc trabalhasse com segundos soh q a sua unidade seria ainda menor e a conversão seria assim :
supondo 1:30:28s

R$ = 0,0013888888 por segundo

1 hora * 3600 segundos = 3600 segundos
30 min * 60 segundos = 1800 segundos
28 seg * 1 segundo = 28 segundos

total : 5.428 segs * 0,0013888888 = 7,5388 = R$ 7,54


GOSTEI 0
POSTAR