A continuación les presento una forma de medir el tiempo con Firemonkey, que nos va a proporcionar una alta precisión y que será muy útil en el caso de que tengamos que medir eventos físicos: la caída de una pelota , movimiento de bolas dentro de una caja, tiro parabólico, simulación de caída libre de un objeto, etc...
La solución es usar la clase
tStopwatch de la
unit system.Diagnostics, que proporciona una lectura precisa del temporizador del reloj del sistema operativo.
Se necesita inicializar el temporizador, por ejemplo en el evento
OnCreate, llamando al método
StartNew.
El método
GetTimeStamp devuelve el número actual de tics del sistema.
Tambien podemos utilizar la propiedad
Frecuency que nos da el número de tics por segundo.
uses
System.Diagnostics;
// ...
procedure TForm1.FormCreate(Sender: TObject);
begin
TStopwatch.StartNew;
Log('Frecuencia = ' + TStopwatch.Frequency.ToString);
end;
function TForm1.GetRawReferenceTime: double;
begin
Result := TStopwatch.GetTimeStamp / TStopwatch.Frequency;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var t, elapsed: double;
begin
t := GetRawReferenceTime;
elapsed := t - FLastTime;
FLastTime := t;
Log('t=' + t.ToString + ' diferencia=' + elapsed.ToString);
end;
Suscribirse :
Weiterlesen...