Fórum obtendo o total de horas #232979
18/05/2004
0
bom gostaria que alguem pudesse solucionar minha duvida,
preciso somar um monte de horas que estao em um StringGrid
e preciso desse total, mas toda vez que a soma ultrapassa o limite de 23:59, o soma volta para 0:00, alguem sabe se existe alguma funcao para que eu possa somar as horas para obter um total por exemplo de 36:00 horas??
Felippe
Curtir tópico
+ 0Posts
19/05/2004
Aroldo Zanela
O ideal é utilizar variáveis contendo data e hora, pois como você já percebeu, a unidade de medida para horas começa em 00:00 à 23:59 e ao ultrapassar o limite final o contador de dias é incrementado.
Portanto, basta pegar a data e hora final, subtrair da data e hora inicial, converter tudo para a mesma base para saber o tempo decorrido na base selecionada.
Gostei + 0
19/05/2004
Felippe
mas usei alguns ´artificios técnicos´ e consegui fazer uma somatória das horas
precisa somar varias horas para ter um total de horas em 6 semanas
por exemplo 236:50 minutos
bom vou colocar o codigo aki caso alguem precise
apesar que como disse isso é uma gambiarra naum respeitando a orientação a objetos ou qualquer outra coisa soh me contactar
//Codigo criar um botao no form procedure TFormCadHorario.Button1Click(Sender: TObject); var d1 : TTime; d2 : TTime; total :TTime; Totalhoras : Integer; VerificaMin :Integer; //variaveis para usar na funcao decodetime Hour :word; Min :word; Sec :word; Msec :Word; Hour2 :word; Min2 :word; Sec2 :word; Msec2 :Word; Hourt :word; Mint :word; Sect :word; Msect :Word; begin d1 := StrToTime(Edit1.Text); d2 := StrToTime(Edit2.Text); //soma as horas total := d1+d2; //funcao que da horas minutos, segundos e milisegungos DecodeTime(d1, Hour, Min, Sec, MSec); DecodeTime(d2, Hour2, Min2, Sec2, MSec2); DecodeTime(total, Hourt, Mint, Sect, MSect); //Exibe a quantidade de horas em integer :o) yeah Totalhoras:=hour + hour2; VerificaMin:=0; if(Totalhoras >= 24) then begin if(Min + min2 > 59) then VerificaMin:= VerificaMin+1; TotalHoras := TotalHoras + VerificaMin; Edit3.Text := IntToStr(TotalHoras) + ´:´ +inttostr(Mint); end else Edit3.Text := inttostr(Hourt) + ´:´ +inttostr(Mint) ; end; //
Gostei + 0
22/06/2004
Carlosmielke
carlos mielke
Gostei + 0
22/06/2004
Spider
//*********** transforma hora em minutos *************//
function HoraMinuto(valor : String):Integer;
var minuto : integer;
begin
minuto:=strtoint(copy(valor,1,pos(´:´,valor)-1))*60;
minuto:=minuto+strtoint(copy(valor,pos(´:´,valor)+1,2));
result := minuto;
end;
//*********** transforma minutos em horas *************//
function MinutoHora(valor : integer):String;
var hora,minuto : integer;
begin
hora:=valor div 60;
minuto:=valor mod 60;
result := formatfloat(´00´,hora)+´:´+formatfloat(´00´,minuto);
end;
2º StringGrid + Button + Label;
no OnClick do Button
var i,total:integer;
begin
total:=0;
for i:=1 to StringGrid1.RowCount-1 do
total:=total+HoraMinuto(StringGrid.Cells[3,1]); //3 coluna das horas
label1.caption:=MinutoHora(Total);
end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)