FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Eliminando items en TTimer...
Bueno, estaba perfeccionando un programita que tenía, algo así como una radio despertador de estas que a tal hora suena la radio, pues igual.
El programa comparaba cada 0,1 segundos el hora local con una hora en un fichero .ini donde estaba la programación, si la hora del sistema era una hora indicada como para iniciarse, el programa, cargaba una canción aleatoria de una lista de canciones. Bueno, ahora quería perfeccionar el programa de esta forma: cada vez que se reproduzca una canción, cuando termina de reproducirse, esta es eliminada de la lista de canciones. Si la lista de canciones, se queda con 0 items, carga las canciones de otra lista. Para esto he hecho dos listas, la songs.ls y la TEMP_songs.ls. El programa maneja la lista TEMP_songs.ls y sólo usa la songs.ls cuando los items se quedan a 0. Bueno, el problema viene que cuando debería eliminar la canción de la lista me crea una excepción, la típica (creo yo) en lista: List Index Out of Bounds (-1). Bueno os pongo todo el código donde se maneja la variable SongsList (TStringList) y os indico donde creo que está el error: Código que se inicia al crear el programa. Bueno, éste es el código que se ejecuta cada 0,1 segundos: Bueno, creo que no me dejado nada. ¡Ah si! Me dejava la liberación de la variable, la he puesto en el OnDestroy del Form. Estoy perdido del todo, no sé porqué me da esta excepción. No estoy seguro de haberla localizarla correctamente. Bueno, espero ansioso vuestras respuestas, y gracias por leer este rollo. :P |
#2
|
||||
|
||||
Por lo q veo el MPlayer es publico, q pasa si se ejecuta otro evento del TTimer sin haber terminado el anterior? yo empezaría por poner como primera instrucción el Enabled del Timer como falso.
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad." Simón Bolívar (Carta al Coronel Inglés Patricio Cambell 05/08/1829). |
#3
|
||||
|
||||
El problema que yo le veo, es estar mirando cada 100 milisegundos la hora
Lo lógico, ver la tarea más cercana y programar el timer para esa fecha. Llegada esa hora, mostrar alerta al usuario y reprogramar el timer para la siguiente fecha de aviso. Edito: El código que ha de ejecutarse cada 100 milisegundos es demasiado extenso, debería ser muy pocas lineas, de lo contrario, puedes perder eventos, porque uno llegue cuando el anterior no se ha terminado, y en el peor de los casos, puede que esté en un evento que no hay tareas definidas, pero en el siguiente evento, que se pierde por solaparse con el primero, si puede haber tareas. No sé si queda claro o no.... Mira estos hilos: http://www.clubdelphi.com/foros/show...t=recordatorio y los que allí se menciona. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 16-01-2006 a las 18:18:58. |
#4
|
|||
|
|||
Mmmm, CompareDate... Bonita función existe la CompareTime? Veo que si! Fantástico, esto me ayudará mucho, pero de todas formas. Cada X tiempo se deberá ejecutar la función compareTime no? No me evito el TTimer, creo...
|
#5
|
||||
|
||||
Como bien dices, el Timer lo necesitas, pero en lugar de ponerle un interval de 100 milisegundos, le pones el total que necesites, por ejemplo:
Como miliseg es de tipo Word, creo que permitía almacenar algo así como 9 semanas, es decir, puedes establecer 1 sola vez el timer para que te avise dentro de 9 semanas. La función compareTime no la necesitas, una fecha y hora se guarda como un número en coma flotante, donde la parte entera corresponde a los dias que han pasado sobre la fecha base del calendario,(creo recordar que la fecha base de los calendarios es 01/01/1900, de hecho si asignas a una fecha el valor cero, te dará 31/12/1899, un día menos ). La parte fraccionaria de ese número es la hora. Si quieres saber si una fecha es más grande que otra...:
Sumar dias, horas o minutos a fechas:
saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
|||
|
|||
Gente, ya he modificado el programilla. Os dejo el resultado, no me funciona. No encuentro el fallo (seguro que es una tontería...). Os lo explico un poco el código también.
Tenéis que saber, que el archivo prog.ini tiene la siguiente estructura: [Programació]Lo primero que he hecho ha sido crear un tipo registro donde almacenaré el Intervalo que ha de tener el TTimer (se canculará posteriormente) y la tarea que ha de hacer, pues el programa ha de reproducir música durante X minutos, donde X lo configura el usuario en un .ini. He hecho un procedimiento que calcula el intervalo que ha de tener el TTime, dependiendo si se la siguiente tarea es reproducir o detener la reproducción. Aquí lo pongo:
Bueno, he hecho dos pequeños procedimientos, uno de Play y otro de Stop, el de Stop no tiene secreto, de todas formas, aquí lo pongo: Ése era el stop, y ahora el play, un poco más larguito, pero sencillo: Después de estos tres procedimientos está el evento OnCreate del programa, aquí os dejo la parte que nos interesa del código: Y finalmente, el OnTimer del TTimer:
Siento haber puesto todo esto aquí, ahora no tenéis excusa de que os falta código... Bueno, voy a ver si resuelvo esto. Espero impaciente vuestra ayuda. Muchas grácias! |
#7
|
|||
|
|||
Sigo sin conseguir solucionar esto... Estoy desesperado, habéis encontrado la solución ya? Bueno, sigo investigando... Seguro que al final era una tontería...
|
#8
|
|||
|
|||
Solucionado!
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Creación de una lista de items | metalfox6383 | Varios | 2 | 19-09-2005 12:57:54 |
Contar Items en un MainMenu | AGAG4 | Varios | 4 | 07-10-2004 17:59:01 |
ListBox Items Hint (MUY URGENTE !!!!) | jymy788 | Varios | 2 | 17-09-2004 09:41:58 |
Crear DBComobox con items | oliverinf | OOP | 4 | 14-09-2004 17:20:21 |
Componente que tenga checkboxes como items | k_miragaya | OOP | 2 | 22-07-2004 09:55:54 |
|