Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 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
  #2  
Antiguo 30-06-2006
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 20
Bauhaus1975 Va por buen camino
Muchas gracias. Voy a intentar lo que me has explicado.
Ya te comento si tengo algún problema.

Un saludo.
Responder Con Cita
  #3  
Antiguo 03-04-2009
Avatar de Arsenio
Arsenio Arsenio is offline
Miembro
 
Registrado: oct 2006
Posts: 13
Poder: 0
Arsenio Va por buen camino
Cita:
Empezado por Lepe Ver Mensaje
Con GetTickCount no necesitas un Timer. Aquí tienes un ejemplo sacado de Ians Marteens "midiendo el tiempo con precisión", adaptado por mí...
Muchas gracias Lepe, justo estaba buscando algo simple pero preciso para medir el tiempo, me vino muy bien tu clase, se agradece...
Responder Con Cita
  #4  
Antiguo 03-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Yo solo utilizaria la funcion TimeGetTime (ideal para lo que necesitas)de la unidad MMSystem ,mas o menos de esta manera:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var dwTiempo: DWord;
begin
    dwTiempo:=TimeGetTime;//aqui  se inicia
    //hago lo que tengo que hacer;
    ...
    ...
    ...
    //al final muestro el tiempo
   ShowMessage( 'Tiempo: '+IntToStr(TimeGetTime-dwTiempo)+' milisegundos' );
   //sencillo optimo y practico
end;
Edito:Esto es sin Timer y sin ninguna Clase extra.
y es mas precisa que GetTickCount.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 03-04-2009 a las 23:14:13.
Responder Con Cita
  #5  
Antiguo 03-04-2009
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
Hola, te recomiendo que en varias partes de tu codigo, por ejemplo dentro de un bucle, uses la instruccion "Applicattion.proccessmessage;"
Esta instruccion hace que windows procese los mensajes pendientes y da el efecto que la aplicacion no se congela. Asi se pueden ejecutar las instrucciones del timer.
Yo lo uso asi y me funciona.
Responder Con Cita
  #6  
Antiguo 03-04-2009
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Wink

Cita:
Empezado por brandolin Ver Mensaje
Hola, te recomiendo que en varias partes de tu codigo, por ejemplo dentro de un bucle, uses la instruccion "Applicattion.proccessmessage;"
Esta instruccion hace que windows procese los mensajes pendientes y da el efecto que la aplicacion no se congela. Asi se pueden ejecutar las instrucciones del timer.
Yo lo uso asi y me funciona.
Apuntada tu sugerencia amigo Brandolin pero creo que haciendolo con un timer no es muy Optimo.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #7  
Antiguo 04-04-2009
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Aqtime es lo mejor que he visto y usado para medir tiempos de ejecucion y buscar cuellos de botella o procesos inecesariamente lentos.
Saluos
__________________
Ya tengo Firma!
Responder Con Cita
  #8  
Antiguo 08-04-2009
Bauhaus1975 Bauhaus1975 is offline
Miembro
 
Registrado: may 2005
Ubicación: Málaga
Posts: 135
Poder: 20
Bauhaus1975 Va por buen camino
Pues me alegro que este post, con cuatro años de vida nos haya ayudado tanto.
Saludos.
Responder Con Cita
Respuesta



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
problemas en tiempo de ejecución Nelly Varios 4 05-04-2006 19:25:53
Problemas al tratar de crear varios componentes en tiempo de ejecucion ilichhernandez Conexión con bases de datos 2 13-11-2005 19:03:26
Cómo medir en unidades de tiempo? Gabriel2 Varios 2 31-10-2005 15:51:24
Problema con un Timer en tiempo de Ejecucion santiellupin OOP 4 15-05-2004 16:21:37
abrir BD mdb usando ADOconnections en tiempo de ejecución viajero2015 Conexión con bases de datos 3 25-09-2003 01:39:05


La franja horaria es GMT +2. Ahora son las 01:19:09.


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