![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
actualizar aplicacion
Tengo un problema haber si me pudieran ayudar
Mi problema es que tengo que hacer que lea en este while cada milisegundo Esta en builder c++ 6 TDateTime Time; while(true) { //saco el tiempo Time=Now(); //Le doy formaro a la variable de tiempo uno=Time.FormatString("hh:nn:ss zzz"); Memo1->Lines->Add(uno); Sleep(1);// un milisegundo Application->ProcessMessages(); // procesar los demas mensajes } Corriendo ejemplo Hora:Minuto:Segundo:Milisegundo 00:34:17 921 00:34:17 937 00:34:17 953 00:34:17 968 00:34:17 984 00:34:18 000 00:34:18 015 Lo que quisiera es lo siguiente ¿Es posible esto? 00:34:17 921 00:34:17 922 00:34:17 923 00:34:17 924 00:34:17 925 00:34:17 926 |
#2
|
||||
|
||||
Cita:
![]() Deberías probar con un Timer y colocar el Interval a 1 (y eliminar el Sleep), aunque creo que sigue siendo una resolución muy pequeña. ¿exactamente qué necesitas hacer cada milisegundo?
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 06-10-2004 a las 09:51:37. |
#3
|
||||
|
||||
Si necesitas tanta precision, no te va a quedar mas remedio que programarlo con un TThread, que es un hilo independiente.
|
#4
|
|||
|
|||
¿Sera seguro esa respuesta (Threads)?
para empezar a programar threads porque necesito precision Gracias saludos |
#5
|
||||
|
||||
Hombre pues deberias de saber que en informatica no hay nada seguro.
Depende de lo que quieras hacer, puedes hacerlo con un thread, que corre paralelo a tu aplicacion (programacion con Hilos), y asi no deberias de hacer el Application ->Proccesmessage(), tambien puedes crearte un componente deribado de TMemo y le metes un TTimer activado a xxxx milisegundos, a bote pronto no se me ocurre otra cosa. |
#6
|
|||
|
|||
Gracias por sus opinione
|
#7
|
|||
|
|||
Buenas a todos!
Mi experiencia cada vez que he trabajado con restricciones de tiempo es que en Windows es muy dificil mantenerlas a "raja tabla" ![]() En concreto, yo necesitaba actualizar ciertos valores cada 30ms y al cabo de 24 o 48 h el error ya era de minutos, lo que hice fue poner un timer cada 10ms y comprobar el tiempo con las funciones ftime. Si habían pasado 30ms desde la última actualización entonces se hacía una nueva actualización de las variables y también del contador. De este modo no consigues asegurar que cada 30 milisegundos se te actualicen las variables, pero al menos los errores no se te acumulan y te aseguras un error instantáneo del 33%. Claro que si necesitas procesar algo cada 1ms siendo esta la resolución máxima del Timer.... no vas a conseguir mucho. Tengo un amiguete ![]() Espero haberte ayudado en algo e intentaré ponerme en contacto con mi amigo para ver si te puedo conseguir el nombre de dichos componentes el Lunes. Saludos a todos! |
#8
|
||||
|
||||
Prueba con algunos de los que hay en ésta página:
http://swiss.torry.net/timers.htm * HighResTimer v.1.02 * HPCounter v.1.1 * HPTimer v.1.2 * TSuperTimer v.1.0.2 * Tztimer v.1.00
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
#9
|
|||
|
|||
Vaya!
Parece que se me han "BIENadelantado". Muchas gracias Netfalí espero que con eso sea suficiente para israelgs. Saludos a todos! |
#10
|
||||
|
||||
Quita el Sleep()
Quita el Application->ProcessMessages(); Puedes hacer esto while(true) Memo1->AddLines(Now().FormatString("hh:nn:ss zzz")); si por el contrario es muy rapido escribeme bgracso@hotmail.com OSKR |
#11
|
||||
|
||||
![]() Yo estuve probando ya hace un tiempo de lograr una presicion un poco mayor y lo logre.
El TTimer no sirve cuando se necesita exactitud. El punto es que Windows 98 trabaja con esa resolución. Por lo que cualquier componente de tiempo siempre va a tener une error superior a ese. Los mejores timers que encontre son los de Indy, te los recomiendo. Pero no el componente sino las funciones y clases que vienen con él. Especialmente StartCount(), JCLTimer y TJclMultiMediaTimer. Proba con los 3 y quedate con lo que mas te guste Suerte Crandel
__________________
[Crandel] |
![]() |
|
|
![]() |
|