Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Me quedé pensando y al final, ni siquiera GetTickcount es fiable.

Mira este truco de Ian Marteens.
__________________
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 31-10-2005
Avatar de Crandel
[Crandel] Crandel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Parana, Argentina
Posts: 1.475
Poder: 25
Crandel Va por buen camino
Recien leo este hilo, asi que voy a intentar aclarar algunas cosas.

Primero, kanvictor estas mesclando dos cosas, una es contar el tiempo transcurrido entre dos eventos y el otro es mostrar este tiempo. Lo escencial es separarlos.

Donde esta tu problema? radica en que cuando le decis TTimer, que cada un segundo (por ejemplo) te genere el evento OnTimer, el TTimer espera que transcurra este tiempo y recien se llama tu evento. Lo cual genera entre un desfasaje entre el tiempo que le pediste y el momento que llegó. Sumando ese desfasaje tenes tus 10 segundos.

Por lo que veo, tus necesidades no son de controlar el tiempo con gran precición, por lo que podes usar el TTimer tranquilamente.

Para controlar el Tiempo simplemente pudes usar la función Time. Cuando recibes el mesaje desde el socket guardas el tiempo con Time y activas tu TTimer.

Luego en tu evento OnTimer:
Código Delphi [-]
formx.LabelTimer.Caption:= FormatdateTime('hh:mm:ss',Time - TiempoInicial);

y solucionado el problema
__________________
[Crandel]
Responder Con Cita
  #3  
Antiguo 01-11-2005
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 22
marceloalegre Va por buen camino
Post Marteens

Muy bien,ha quedado claro, igual al final me habia tirado para el lado del gettickcount con excelentes resultados.

Me queda ahora una duda de lo que dice Ian Marteens:

Código:
Tenga mucho cuidado, si piensa utilizar GetTickCount para este propósito.
 Cada 49 días y fracción, el contador interno sobrepasará el límite de 
çcapacidad del tipo Cardinal. Si tenemos la mala fortuna de hacer la primera 
llamada antes del suceso, y la segunda después, obtendremos una diferencia 
exageradamente grande, suponiendo que utilizamos un Cardinal para el 
resultado. Si nuestro algoritmo trata sobre teclas y combos de búsqueda, no 
puede pasar nada "excesivamente" malo como castigo. Pero si estamos 
controlando algún proceso peligroso... no quiero ni pensar lo que podría 
suceder.
Tiene alguna solucion el problema de que gettickcount sobrepasa el limite de capacidad de la variable o hay alguna solucion factible al tema?
Responder Con Cita
  #4  
Antiguo 01-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por Dr. Marteens
¿Volvemos al punto de partida? Si queremos una buena medida, en millonésimas de segundo, del tiempo consumido por un algoritmo, podemos utilizar las funciones presentadas de esta manera:
Código Delphi [-]
const
  UnMillon = 1000000;
var
   Frecuencia, X, Y: Int64;
begin
   QueryPerformanceFrequency(Frecuencia);
   QueryPerformanceCounter(X);
   Algoritmo;
   QueryPerformanceCounter(Y);
   ShowMessage(FormatFloat('0,', (Y - X) * UnMillon div Frecuencia));
end;
Suerte
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #5  
Antiguo 01-11-2005
Avatar de marceloalegre
[marceloalegre] marceloalegre is offline
Miembro Premium
 
Registrado: abr 2005
Ubicación: Mar del Plata - Argentina
Posts: 448
Poder: 22
marceloalegre Va por buen camino
Talking

Si el lo dice... ha de ser palabra Santa!!

Gracias y saludos!
Responder Con Cita
  #6  
Antiguo 28-11-2006
gonzalza gonzalza is offline
Registrado
 
Registrado: nov 2006
Posts: 8
Poder: 0
gonzalza Va por buen camino
Retardo ml segundos

1.tu sabes como generar un retardo de una instruccion de codigo a otra en delphi, sin utilizar timer? ejemplo delay algo asi

2. Y como se genera el codigo de que puede hace un button dentro de un timer, nose como meter el codigo en el timer?
Responder Con Cita
  #7  
Antiguo 28-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
1.- Sleep(2000) se paraliza el hilo de ejecución 2000 milisegudos
Quizás Application.ProcessMessages y Application.HandleMessages pueda servier, no son un retardo en sí, pero hace que mire la cola de mensajes de la aplicación, de esa forma la interfaz no se queda congelada y permite que se haga clicks en otros botones.

2.- Dentro del evento onTimer del TTimer, añade Button1.Click, así ejecutará el código que exista para ese botón.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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


La franja horaria es GMT +2. Ahora son las 03:13:15.


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