Midiendo el tiempo con Firemonkey










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;


















No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...