funcao format

30/07/2008

2

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.


Responder

Posts

30/07/2008

Sidimarsilva

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.



Responder

01/08/2008

Sidimarsilva

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:


Responder

01/08/2008

Fabianosales

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));



Responder

01/08/2008

Marco Salles

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]


Responder

01/08/2008

Sidimarsilva

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


Responder