O ideal seria vc pegar toda a hora transformar para mile, calcular a dif, voltar pra "hh:nn:ss.z"
DecodeDateTime(ant, ano, mes, dia, horas, minutos, segundos, milisegundos); msecs_ant := (( horas * 3600 ) + (minutos * 60) + segundos ) * 1000) + milisegundos; DecodeDateTime(Now, ano, mes, dia, horas, minutos, segundos, milisegundos); msecs_ago := (( horas * 3600 ) + (minutos * 60) + segundos ) * 1000) + milisegundos; label1.caption := MSecToTime( msecs_ago - msecs_ant ); // isso vai calcular a diff em tempo de até 24 horas, pra mais vai ter que fazer uma alterações... // ai é com vc........ end; function MSecToTime(mSec: Int64): string; const MSecsPerSec = 1000; SecsPerDay = 86400; var dt : TDateTime; begin dt := mSec / MSecsPerSec / SecsPerDay; Result := Format('%s', [FormatDateTime('hh:nn:ss.z', Frac(dt))]) ; while Length(result) < 12 do result := result + '0'; end; Luiz Escobar - Analista/Desenvolvedor: WEB - HTML/JavaScript/PHP/MySQL WINDOWS - Delphi/ASSEMBLY/MySQL/xBase SERVIDORES - CNA IntraNetWare4.11, LINUX-(RedHat9/Suse10.2), Windows 2K/XP HARBOUR -------------------------------------------------------------------------- Borland C++ 5.5.1 (32 bit) Harbour 1.0.0rc2 Intl. (Rev. 8941) xHarbour Compile build 1.1.0 (Simplex) Harbour MiniGUI 1.5 Extended Edition (Build 53a) - 2008.07.07 ------------------------------------------------------------------------------------------- From: William Brum Sent: Friday, July 18, 2008 3:55 PM To: delphi-br@yahoogrupos.com.br Subject: [delphi-br] obter milesimos de segundos de tempo inicial e final... Amigos, Preciso da ajuda de voces, pois nãos sei se fiz certo a parada abaixo. Pego uma ... var dia, mes, ano, horas, minutos, segundos, DecSegundos, segundos_ant, segundos_final, milisegundos, milisegundos_ant, milisegundos_final: Word; DataAtu,DataAnt,Data : TDateTime; ... // pego os segundos e milesimos de segundos e jogo numa variável. DecodeDateTime(Now, ano, mes, dia, horas, minutos, segundos, milisegundos); // guardo os segundo e milisegundos em variável auxiliar milisegundos_ant := milisegundos; segundos_ant := segundos; ... // segudos depois, pego novamente os segundos e milesimos de segundos DecodeDateTime(Now, ano, mes, dia, horas, minutos, segundos, milisegundos); // faço esta bagunça abaixo, para pegar a diferença // entre os milisegundos atuais e o anterior if milisegundos > milisegundos_ant then milisegundos_final := (milisegundos - milisegundos_ant) else milisegundos_final := (milisegundos_ant - milisegundos); milisegundos_ant := milisegundos; // mesma coisa faço para pegar a diferença // entre os segundos atuais e o anterior if segundos > segundos_ant then segundos_final := (segundos - segundos_ant) else segundos_final := (segundos_ant - segundos); segundos_ant := segundos; ... A pergunta é... será que isso tá certo? Não tem forma melhor de fazer? Quem puder me dá (opsssssss) uma ajuda, eu agradeço! um abraço, William Brum BH - Minas