Ver Mensaje Individual
  #5  
Antiguo 30-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Con GetTickCount no necesitas un Timer. Aquí tienes un ejemplo sacado de Ians Marteens "midiendo el tiempo con precisión", adaptado por mí:

Código Delphi [-]
type


   TPerformanceTime = Class(TObject)
  private
    FElapsed: Int64;
    FStart, FFinish, FFrec:Int64;
    function GetFElapsedTime: String;
    public
      procedure Start;
      procedure Finish;
      property ElapsedTime : String read GetFElapsedTime;

    end;
implementation

{ TPerformanceTime }

  const MiliSegundos = 1000;

procedure TPerformanceTime.Finish;
begin
  QueryPerformanceCounter(FFinish);
  FElapsed := (FFinish - FStart) * MiliSegundos div FFrec;
end;

function TPerformanceTime.GetFElapsedTime: String;
begin
  result := Format(' %d Milisegundos',[FElapsed]);
end;

procedure TPerformanceTime.Start;
begin
   QueryPerformanceFrequency(FFrec);
   QueryPerformanceCounter(FStart);
end;

Ejemplo de uso:
Código Delphi [-]
var Counter : TperformanceTime;
begin
  Counter := TPerformanceTime.Create;
  Counter.Start;
  // algoritmo a medir el tiempo;
  Counter.Finish;
  ShowMessage(Counter.ElapsedTime);
  Counter.Free;
end;

Como el cronómetro usado es del ordenador, no importa si nuestra aplicación se queda congelada.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita