FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Calcular tiempo
hola a todos:
tengo un problema con un programa para calcular numeros primos trabajo con delphi 7. resulta que el bucle para calcular los numeros primos me consume todo el procesador y queria calcular el tiempo que tarda en completarse con un componente timer que sume uno cada segundo a una variable pero resulta que no empieza a sumar hasta que se acaba el proceso para sacar numeros primos, si pueden ayudarme gracias este es el codigo:
|
#2
|
||||
|
||||
Hola,
Se me ocurren dos cosas: una, que utilizes el método de "Application" "ProcessMessages" en el interior de alguno de los bucles, o en todos ellos; y dos, que utilizes un Hilo aparte para el procedimiento que se "come" al Hilo principal de la aplicación. |
#3
|
|||
|
|||
hola dec, soy no vato en delphi.
me podrias explicar como es para crear otro hilo?? gracias |
#4
|
||||
|
||||
Hola,
Bueno, el tema de las aplicaciones multi-hilo tiene mucha tela que cortar, y yo no podría ni hacerme un chaleco, pero, muy sencillamente, el propio IDE de Delphi te lo pone bastante hacedero. Siguiente el menú File -> New -> Others -> Delphi Files (esto en Delphi 2006) -> Thread Object el entorno de preparará una plantilla que incluye prácticamente todo lo que necesitas para emplear un Hilo de ejecución separado del principal de la aplicación. Básicamente, insisto, en la plantilla encontrarás un método de nombre "Execute" ya declarado he implementado (a falta que añadas en él el código fuente que quieres que se ejecute en el Hilo de marras). Es ahí donde puedes ejecutar el código que se "zampa" al Hilo principal de la aplicación. Bien, pero, ¿cómo inicias el Hilo? Pues creándo el objeto correspondiente, como cualquier otra clase, algo así:
Con solo esa instrucción estarás creando el Hilo, y, en virtud del parámetro del constructor (false, en este caso) estarás haciendo (más información en la ayuda) que comienze la ejecución del método "Execute" del Hilo. Lo que ocurre es que esa ejecución se llevará a cabo en otro Hilo distinto del principal, de tal modo que tu aplicación pueda seguir con otras tareas, por ejemplo, o, simplemente, mostrando una interfaz "disponible" para el usuario. En estos Foros se habrá tratado más de una vez y más de dos el tema de los Hilos. Yo no te puedo procurar mucha más información, sino decirte que la complejidad del tema acaso deba ir un poco en función de tus necesidades: es posible que con poco que aprendas sobre ello te sea más que suficiente para llevar a cabo lo que precisas, quiero decir. Y, por otro lado, ¿probaste con el método "ProcessMessages" de "Application"? Puede que para lo que quieres hacer sea bastante. Actualización: Adjunto un ejemplo muy, muy sencillo a ver si se aprecia la idea. Última edición por dec fecha: 25-01-2006 a las 19:26:51. |
#5
|
|||
|
|||
no, no he probado con el método "ProcessMessages" de "Application", porque todavia no se de que va eso, ahora iba a investigar por el foro, pero tambien probare lo del hilo para ver como es.
muchas gracias dec. |
#6
|
||||
|
||||
y si pruebas usando GetTickCount junto con un Application.ProcessMessages
Saludos. Vicente López. |
#7
|
||||
|
||||
Algunos comentarios respecto a tu código:
// Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Funcion de tiempo | pedromanuel | JAVA | 7 | 29-11-2006 00:00:58 |
Y vosotros que creías que lo sabíais todo. | gryphus | Humor | 20 | 06-07-2005 23:20:35 |
Tiempo en String | miguel_fr | Varios | 4 | 25-04-2004 20:06:05 |
Unidades de Tiempo | obiwuan | Humor | 0 | 06-05-2003 21:32:51 |
|