Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-02-2014
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
Objeto para Medir el Tiempo de Ejecución de un Proceso

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
   // Retrieves the frequency of the high-resolution performance counter
   QueryPerformanceFrequency(Frecuencia);

   // Inicio de Conteo de Tiempo
   QueryPerformanceCounter(ITime);
end;

procedure TCounterTime.StopCounterTime;
begin
   // Fin de Conteo de Tiempo
   QueryPerformanceCounter(FTime);
end;

procedure TCounterTime.CalculateCounterTime;
begin
   // Calculo del Tiempo Total del Proceso expresado en Milisegundos
   Milliseconds := (FTime-ITime) * 1000 div Frecuencia;

   // Conversión de Milisegundos a Horas, Minutos, Segundos y el resto en Milisegundos
   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;

   // Conversión de las variables de tiempo a TDateTime
   TotalTime := EncodeTime(Hours,Minutes,Seconds,Milliseconds);
end;

procedure TCounterTime.DisplayCounterTime;
begin
   // Formateo del tiempo calculado
   TimeLapse := 'El Tiempo de Ejecución del Proceso fue : ';
   TimeLapse := TimeLapse + FormatDateTime('hh:nn:ss:zzz', TotalTime);

   // Visualización del Tiempo Trascurrido
   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
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses CounterTime;

{$R *.dfm}

// Calcular el tiempo de un proceso por medio del objeto TCounterTime
procedure TForm1.Button1Click(Sender: TObject);

   procedure MonitoredProcess(T : Int64);
   begin
      Sleep(T);
   end;

var
   T : TCounterTime;

begin

   // Inicio de Conteo de Tiempo
   T.StartCounterTime;

   // Proceso a monitorear el tiempo de ejecución
   MonitoredProcess(2859);

   // Fin de Conteo de Tiempo
   T.StopCounterTime;

   // Calculo del Tiempo Total del Proceso
   T.CalculateCounterTime;

   // Visualización del Tiempo Trascurrido
   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.

Última edición por nlsgarcia fecha: 22-02-2014 a las 08:02:14.
Responder Con Cita
  #2  
Antiguo 22-02-2014
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.232
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Muy interesante. Gracias por el aporte, amigo

Saludfos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Medir tiempo de ejecución usando Timer (Problemas) Bauhaus1975 Varios 12 24-11-2012 03:16:59
Que es mejor Agregar el Objeto al Form o crearlo en tiempo de Ejecución JerS OOP 11 20-07-2011 15:03:25
Problemas al crear un objeto en tiempo de ejecución vejerf Varios 5 13-02-2007 13:28:46
Objeto seleccionado en tiempo de ejecucion Javier Sotillos OOP 1 30-09-2005 10:09:38
Poner en tiempo ejecución un objeto dentro de cesar_picazo Varios 1 27-03-2004 17:25:32


La franja horaria es GMT +2. Ahora son las 14:43:18.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi