Fórum subtraindo hora, minuto, segundo e milésimo de segundos ? #349603

25/11/2007

0

tem como subtrair horas junto com milesimo de segundos ?

este exemplo aki fás a contagem dos milésimos..

1
2
3
4
5
procedure TForm2.Timer1Timer(Sender: TObject);
begin
  Edit1.Text := FormatDateTime(´HH:MM:SS:ZZZ´, TimeOld - NOW);
 
end;


e este fás o cáculos sem os milésimos de segundo:

1
2
3
4
5
6
7
8
9
10
var
TempoFinal, TempoInicial, Tempo : TTime;
begin
TempoInicial:=StrToTime(Edit2.Text);
Tempo:=StrToTime(Edit3.Text);
 
TempoFinal:= TempoInicial- Tempo;
 
label9.Caption:= TimeToStr(TempoFinal);
end;


quando tem colocar o formato de milésimos de segunda dando um erro que é incompatível.

alguém sabe algo ? vlw t+


Gigatel

Gigatel

Responder

Posts

26/11/2007

Gigatel

ninguém sabe como subtrair não ? derrepente convertendo para inteiro ou removendo os pontos das horas, algo assim ..vlw t+


Responder

Gostei + 0

26/11/2007

Edilcimar

eu já tive este tipo de problema e foi respondido aqui no fórum, o meu problema era com décimo de milésimo de segundo, não me recordo qual o tópico, mas se achar aqui depois respondo


Responder

Gostei + 0

26/11/2007

Gigatel

eu já tive este tipo de problema e foi respondido aqui no fórum, o meu problema era com décimo de milésimo de segundo, não me recordo qual o tópico, mas se achar aqui depois respondo


rapás, já procurei na internet aki no fórum más não achei(pelo menos com as palavras chaves que usei..)

más vlw a atenção..


Responder

Gostei + 0

26/11/2007

Edilcimar

acho que foi este
http://forum.devmedia.com.br/viewtopic.php?t=64098&highlight=decimo


Responder

Gostei + 0

26/11/2007

Gigatel

acho que foi este http://forum.devmedia.com.br/viewtopic.php?t=64098&highlight=decimo


olha o código
1
2
3
4
5
6
7
TempoMeio := 86400 * TransformaHoraEmPontoFlutuante(MaskEdit4.Text);
End;
If Tempo2 > 0 then
Begin
VelocidadeMeio := (Sensor1 / (Tempo2 - TempoMeio)) * 3.6;
MaskEdit7.Text := FloatToStrF(VelocidadeMeio, ffFixed,5,2);
End;


este :

TempoMeio
TransformaHoraEmPontoFlutuante
VelocidadeMeio

são variáveis ? de que tipo?

vlw.


Responder

Gostei + 0

26/11/2007

Gigatel

derrepente eu posso estar indo para lado errado da coisa. o que presciso mesmo é inserir dados deste tipo que esta em um listbox (pode dar outra dica tbm se este num der certo)está neste formato.

00:00:01:000
00:00:05:026
00:00:06:563

a ssim por diante

eu quero colocar isso num char para poder mostrar um gráfico de desempenho, só que dá um erro quando tento colocar a informação lá.. e estou com uma dúdida no loop para mandar todos o registros para este char.. ou seja estou ferrado..hehehehemás tenho que ir passo a passo..
vlw. aguardo noticias..hehehe


Responder

Gostei + 0

26/11/2007

Massuda

StrToTime só sabe lidar com hora-minuto ou hora-minuto-segundo.


Responder

Gostei + 0

26/11/2007

Gigatel

será que dá certo eu tirar o ´dois pontos´ e deixar direto ? tipo

00:00:01:000 = 000001000
00:00:05:026 = 000005026
00:00:06:563 = 000006563

assim o tchart compreende as informações se erro..será que dá certo ?


Responder

Gostei + 0

26/11/2007

Edilcimar

o resultado entre 2 tempos é real


Responder

Gostei + 0

26/11/2007

Edilcimar

aqui está, tirei do meu programa onde a coisa funciona

Function TransformaHoraEmPontoFlutuante(Texto : string) : Real;
Function TransformarPontoFlutuanteTexto(PontoFlutuante : Real; var Hh,Mm,Ss,Ms : Word):String;

Function TransformaHoraEmPontoFlutuante(Texto : string) : Real;
Var
Hh , Mm, Ss, Ms : Word;
Fator : Integer;
begin
Fator := 36000000;
Hh := 0;
Mm := StrToInt(Copy(Texto,1,2));
Ss := StrToInt(Copy(Texto,4,2));
Ms := StrToInt(Copy(Texto,7,4));
Result := ((Hh*Fator)+(Mm*(Fator/60))+(Ss*(Fator/(60*60)))+Ms)/(24*Fator);
end;

Function TransformarPontoFlutuanteTexto(PontoFlutuante : Real; var Hh,Mm,Ss,Ms : Word):String;
Var
Resto, Fator, Fracao : Integer;
T1, T2, T3 : String;
begin
Fator:=864000000;
Fracao := Round(PontoFlutuante * Fator);
Fator := Fator div 24;
Hh := Fracao div Fator;
Resto := Fracao mod Fator;
Fator := Fator div 60;
Mm :=Resto div fator;
Resto := Resto mod fator;
Fator := Fator div 60;
Ss := Resto div fator;
Ms:= Resto mod fator;
T1 := ´0´+IntToStr(Mm);
T1 := Copy(T1,Length(T1)-1,2);
T2 := ´0´+IntToStr(Ss);
T2 := Copy(T2,Length(T2)-1,2);
T3 := ´000´+IntToStr(Ms);
T3 := Copy(T3,Length(T3)-3,4);
Result := T1+´:´+T2+´:´+T3;
end;


Responder

Gostei + 0

26/11/2007

Gigatel

aqui está, tirei do meu programa onde a coisa funciona Function TransformaHoraEmPontoFlutuante(Texto : string) : Real; Function TransformarPontoFlutuanteTexto(PontoFlutuante : Real; var Hh,Mm,Ss,Ms : Word):String; Function TransformaHoraEmPontoFlutuante(Texto : string) : Real; Var Hh , Mm, Ss, Ms : Word; Fator : Integer; begin Fator := 36000000; Hh := 0; Mm := StrToInt(Copy(Texto,1,2)); Ss := StrToInt(Copy(Texto,4,2)); Ms := StrToInt(Copy(Texto,7,4)); Result := ((Hh*Fator)+(Mm*(Fator/60))+(Ss*(Fator/(60*60)))+Ms)/(24*Fator); end; Function TransformarPontoFlutuanteTexto(PontoFlutuante : Real; var Hh,Mm,Ss,Ms : Word):String; Var Resto, Fator, Fracao : Integer; T1, T2, T3 : String; begin Fator:=864000000; Fracao := Round(PontoFlutuante * Fator); Fator := Fator div 24; Hh := Fracao div Fator; Resto := Fracao mod Fator; Fator := Fator div 60; Mm :=Resto div fator; Resto := Resto mod fator; Fator := Fator div 60; Ss := Resto div fator; Ms:= Resto mod fator; T1 := ´0´+IntToStr(Mm); T1 := Copy(T1,Length(T1)-1,2); T2 := ´0´+IntToStr(Ss); T2 := Copy(T2,Length(T2)-1,2); T3 := ´000´+IntToStr(Ms); T3 := Copy(T3,Length(T3)-3,4); Result := T1+´:´+T2+´:´+T3; end;



vlw mesmo..foi de uma grande ajuda.


Responder

Gostei + 0

26/11/2007

Gigatel

pode ser burrice minha, más não estou conseguindo funcionar esta função, tenho que ter qnts edits ? e como chamo ela no aplicativo..por encrível que parece não conseguí botar funcinar. vlw e desculpa o transtorno.


Responder

Gostei + 0

27/11/2007

Edilcimar

Na realidade tenho diversos maskedit, de onde pego o tempo no formato
hh:mm:ss:decimomilesimosegundo, este último com 4 casas. Cada maskedit é um dos tempos de cronometragem


Responder

Gostei + 0

27/11/2007

Gigatel

problema resolvido..vlw Edilcimar, vlw mesmo..t+


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar