funcao format

Delphi

30/07/2008

Salve galera,

Mais uma vez recorro aos amigos, estou tentando fazer um programinha para calcular horas extras, tenho um campo HENTRADA e HSAIDA e QTDHORAS ( todos TIMESTAMP no firebird).

1º gostaria de aprender como pegar apenas parte de uma string tipo se eu usar TimeToStr(HENTRADA) me retornar ao inves de 08:20:00 apenas 08 ou 20.

2º alguem tem uma dica para simplificar tipo entrada 10:00 saida 18:30 8,5 horas multiplico pelo valor da hora ex: 10,00 = 10.

Valeu galera.


Sidimarsilva

Sidimarsilva

Curtidas 0

Respostas

Sidimarsilva

Sidimarsilva

30/07/2008

Salve galera, Mais uma vez recorro aos amigos, estou tentando fazer um programinha para calcular horas extras, tenho um campo HENTRADA e HSAIDA e QTDHORAS ( todos TIMESTAMP no firebird). 1º gostaria de aprender como pegar apenas parte de uma string tipo se eu usar TimeToStr(HENTRADA) me retornar ao inves de 08:20:00 apenas 08 ou 20. 2º alguem tem uma dica para simplificar tipo entrada 10:00 saida 18:30 8,5 horas multiplico pelo valor da hora ex: 10,00 = [b:9d51cd96eb]80[/b:9d51cd96eb] hehehe. Valeu galera.



GOSTEI 0
Sidimarsilva

Sidimarsilva

30/07/2008

Ninguem nada...

se me puderem me indicar um tutorial ja ajudaria d+, to com umas 20 apostilas procurando mais o tempo ta acabando. please. :cry:


GOSTEI 0
Fabianosales

Fabianosales

30/07/2008

1º gostaria de aprender como pegar apenas parte de uma string tipo se eu usar TimeToStr(HENTRADA) me retornar ao inves de 08:20:00 apenas 08 ou 20.


Adicione a unit DateUtils na ´uses´ de sua unit e escreva função:
type
  TTimePart = (tpHora, tpMinuto, tpSegundo, tpMilisegundo);

(...)

function GetTimePart(const time: string; part: TTimePart): string;
var
  t: TDateTime;
  hora, minuto, segundo, milisegundo: word;
begin
  if TryStrToTime(time, t) then
    begin
      DecodeTime(t, hora, minuto, segundo, milisegundo);
      case part of
        tpHora       : result := IntToStr(hora);
        tpMinuto     : result := IntToStr(minuto);
        tpSegundo    : result := IntToStr(segundo);
        tpMilisegundo: result := IntToStr(milisegundo);
      end;
    end
  else
    raise EInvalidCast.Create(Format(´A string "¬s" não contém uma data válida.´, [time]));
end;

E pra usá-la:
ShowMessage(´Hora = ´ + GetTimePart(´10:23:25´, tpHora)); ShowMessage(´Minutos = ´ + GetTimePart(´10:23:25´, tpMinuto)); ShowMessage(´Segundos = ´+ GetTimePart(´10:23:25´, tpSegundo)); ShowMessage(´Milissegundos = ´+ GetTimePart(´10:23:25´, tpMilisegundo));



GOSTEI 0
Marco Salles

Marco Salles

30/07/2008

2º alguem tem uma dica para simplificar tipo entrada 10:00 saida 18:30 8,5


voce quer é uma forma de transformar HMS em Valor Decimal não é isto

Assim
1 hora em decimal seria 1
1Hora e 30Minutos em decimal seria 1,5 etc...


function TransHmsDecimal(he,hs:TTime):real;
begin
 result:=(hs-he)*24;
end;



procedure TForm1.Button2Click(Sender: TObject);
var
he,hs:Ttime;
begin
he:=strtotime(´10:00:00´);
hs:=strtotime(´11:00:00´);
showmessage(floattostr(RoundTo(TransHmsDecimal(he,hs),-2)));
end;


[b:7bafbb4fe1]Declare Math[/b:7bafbb4fe1]


GOSTEI 0
Sidimarsilva

Sidimarsilva

30/07/2008

Galera, mais uma vez muito obrigado vcs me pouparam muuuuuiiitaaaa leitura hehehe.

Tudo perfeito agora to tentando montar uma unica Unit pra minhas funcões pra nao ficar repetindo sempre. mais ai ja é uma outra conversa.

valeu mesmo pessoal. t+ :D


GOSTEI 0
POSTAR