Club Delphi,
Revisen este código:
Código Delphi
[-]
unit CounterTime;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TCounterTime = object
private
Frecuencia, ITime, FTime : Int64;
TimeLapse : String;
Hours, Minutes, Seconds, Milliseconds : Int64;
TotalTime : TDateTime;
public
procedure StartCounterTime;
procedure CalculateCounterTime;
procedure StopCounterTime;
procedure DisplayCounterTime;
end;
implementation
procedure TCounterTime.StartCounterTime;
begin
QueryPerformanceFrequency(Frecuencia);
QueryPerformanceCounter(ITime);
end;
procedure TCounterTime.StopCounterTime;
begin
QueryPerformanceCounter(FTime);
end;
procedure TCounterTime.CalculateCounterTime;
begin
Milliseconds := (FTime-ITime) * 1000 div Frecuencia;
Hours := Milliseconds div (1000*60*60);
Minutes := Milliseconds mod (1000*60*60) div (1000*60);
Seconds := Milliseconds mod (1000*60*60) mod (1000*60) div 1000;
Milliseconds := Milliseconds mod (1000*60*60) mod (1000*60) mod 1000;
TotalTime := EncodeTime(Hours,Minutes,Seconds,Milliseconds);
end;
procedure TCounterTime.DisplayCounterTime;
begin
TimeLapse := 'El Tiempo de Ejecución del Proceso fue : ';
TimeLapse := TimeLapse + FormatDateTime('hh:nn:ss:zzz', TotalTime);
MessageDlg(TimeLapse,mtInformation,[mbOK],0);
end;
end.
El código anterior
implementa el objeto TCounterTime para medir el tiempo de ejecución de un proceso, el cual permite crear una instancia del mismo de forma directa.
Revisen este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
uses CounterTime;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
procedure MonitoredProcess(T : Int64);
begin
Sleep(T);
end;
var
T : TCounterTime;
begin
T.StartCounterTime;
MonitoredProcess(2859);
T.StopCounterTime;
T.CalculateCounterTime;
T.DisplayCounterTime;
end;
end.
El código anterior
utiliza el objeto TCounterTime para medir el tiempo de ejecución de un proceso.
Nota: El tipo object permite instanciar objetos
sin usar el método Create y es muy util para implementaciones de tipos abstractos simples, para desarrollos formales orientados a objetos
se debe usar el tipo Class.
Espero sea útil
Nelson.