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 20-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,


Cita:
Empezado por Lepe
Un Timer de delphi no tiene fallos.
Bueno. Conste que yo no he querido decir eso, sino constatar el hecho de que existen "Timer's" con mayor resolución, por decirlo de algún modo. Me parece raro que sean cinco segundos de "desfase" los que se alcanzen, pero, he probado alguna vez alguno de los "Timer's más precisos" y, en los ejemplos que acompañan a dichos componentes suele haber una muestra, precisamente, de cómo estos son más precisos que los "TTimer" de Delphi. Lamento no recordar exactamente el componente en cuestión, pero, en el enlace de más arriba pueden encontrarse varios de ellos: probablemente incluyan ejemplos en que se muestre la diferencia entre ambos "TTimer"y "THighTimer", por llamar de algún modo al "TTimer especial".
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #2  
Antiguo 20-10-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola de nuevo,

Acaso quepa añadir que, efectivamente, los "THighTimer's" son usados, me parece a mí, no en intervalos demasiado "largos"; es precisamente ahí donde muestran su mayor eficacia respecto a los "TTimer" que acompañan a Delphi. Quiere decirse que este puede medir un tiempo de "0.500" milisegundos, y acaso los otros rezen "0.230" segundos, o resultados por el estilo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 20-10-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
Exclamation

Mi estimado lepe... se supone que como estoy hablando del timer, si hay un timer , lo que mostre de codigo es lo que esta adentro del timer.... ... no entiendo por que preguntas esooo....??
Si, quizas es porque dije que lo mando por socket... se puede interpretar otra cosa... o sea yo por socket mando la orden de que se active el timer con el codigo que he dejado expresado anteriormente, si se malentendio, mil disculpas!

En cuanto a lo que tu dices que el timer no tiene fallos... No me cierra bajo ningun concepto!!!
Imagina... tu pones un timer a hacer "algo" a 1000 ms...
perfecto....
emmm imagina que los recursos del cpu estan al 80 % o sea la pc esta a full....

entonces... no imaginas que el timer se ir un poco de tiempo imaginemos...
1010 ms.... o sea.,, si muestro algo en pantalla considero que siempre poco a poco se va a ir adelantando...

Lo digo comprobado empiricamente.. agarramos las pc y pusimos a tirar datos por pantalla con algunos for's paralelos para sacar recursos al procesador... y el adelanto fue detectado perfectamente... asi que si... el timer no es perfecto...
Ahora si , con GetTickCount haciendo lo debido, podria solucionar el problema....


Saludos!.
Responder Con Cita
  #4  
Antiguo 20-10-2005
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.669
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Por mi experiencia, y por lo que he leído , sé que el timer de delphi no es muy exacto. Si requieres más precisión o necesitas de varios timer te aconsejo el que trae las RX, que tiene la particularidad de ser un TrxTimerList, así con un único "componente" en tu programa puedes gestionar multitud de timers.
Responder Con Cita
  #5  
Antiguo 21-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por Casimiro Notevi
Por mi experiencia, y por lo que he leído , sé que el timer de delphi no es muy exacto. Si requieres más precisión o necesitas de varios timer te aconsejo el que trae las RX, que tiene la particularidad de ser un TrxTimerList, así con un único "componente" en tu programa puedes gestionar multitud de timers.
El Timer tiene como límite, los milisegundos, si quieres diezmilesimas, entonces si necesitas mayor precisión y tienes que usar otra técnica.

Este es el punto que quería aclarar.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
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
  #7  
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
  #8  
Antiguo 21-10-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 31
Lepe Va por buen camino
Cita:
Empezado por kanvictor
Mi estimado lepe... se supone que como estoy hablando del timer, si hay un timer , lo que mostre de codigo es lo que esta adentro del timer.... ... no entiendo por que preguntas esooo....??
No dijiste que ese código está dentro del evento OnTimer.

Creía que estabas midiendo el tiempo con esa expresión, y desde luego, realizar conversiones de texto a número y sumarle fracciones de tiempo no es la forma de medir el tiempo. La forma correcta sería con GetTickCount, si quieres toda la precisión.

Dices que el resultado de esa expresión es la que se usa para enviarla por sockets. Creía que esa expresión era la que realmente medía el tiempo !!

Yo he realizado pruebas de ese estilo con timers, y no he tenido retardo, en realidad los retardos se producían en mi código, y creo que tambien es tu caso (intuyo).

Dentro del timer, ejecutas ese código (ya consume algo de tiempo, mínimo, porque son 3 o 4 conversiones), despues lo envias por sockets, (tambien se consume un tiempo más considerable), el programa Cliente Recibe el tiempo que ha de activar su timer y lo pone en marcha, Justo en este punto es cuando debes empezar a contar el tiempo.

Si usas un reloj de pulsera, tambien hay retardos en pulsar el botón o parar el crono, por tanto no es fiable.

No es lógico medir el tiempo desde antes de lanzarlo por sockets.

Quizás lo esté entendiendo de otra forma .

En cuanto a que el sistema esté al 80 % y se pase por alto, o se retrase..., solo puedes darle prioridad a tu proceso en windows, para que windows lo trate con más "atención" que al resto. Pero en este caso, no se trata de retardos del timer, sino retardos de Windows en procesar el mensaje desde el cronómetro interno del sistema (hardware) hasta que llega a tu aplicación.

Lo ideal, como estas viendo es unir la prioridad de proceso con GetTickCount.

Espero que ahora me haya expresado mejor.

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 00:11:32.


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