![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con bucle.
Saldudillos. He creado un pequeño programa para abrir una pagina web cada 35 segundos. El problema es que se abren todas casi al inmediato. Os pongo el sistema de bucle: (PD: no hay errores de sintaxis)
Botón que hace empezar:
Bucle de tipo timer:
Nota: También hay un error, que es que cuando acaba de abrir todas las páginas (cuando valor x llega a ser como valor y) no cierra (exit). |
#2
|
||||
|
||||
Hola.
1º fallo: eso no es un bucle. Sí lo son los whiles, repeat y for. 2º fallo: ¿dónde está declarada x? ¿Qué valor tiene al principio? Consejo: x:=x+1; se puede escribir Inc(x); (queda más bonito ![]() 3º fallo: Pon en Interval un valor de 35000 para que pasen 35 segundos. 4º fallo: ¿De qué debería salir exit;? Exit sirve para salir del procedimiento o función, no cierra la aplicación (que se haría con Close; del formulario principal, con Application.Terminate; o con Halt;), ni anula el evento OnTimer para la próxima vez (esto se hace Timer1.Enabled:=False;) Salu2. Última edición por ixMike fecha: 24-02-2008 a las 18:29:28. Razón: Pequeña confusión, el 2º fallo no era lo que había puesto |
#3
|
||||
|
||||
Hola,
Creo que deberías planteártelo de otro modo. En lugar de un "Timer" con un intervalo de tan sólo 1 milisegundo (como ahora lo haces) este intervalo podría ser de 35000 milisegundos, es decir, justo los 35 segundos que dices. De ese modo el evento "OnTimer" se producirá cada 35 segundos, y ahí es donde tienes que hacer lo que creas oportuno: abrir las páginas que te sean menester. PD. Se me adelantó el compañero ixMike. ![]() |
#4
|
|||
|
|||
Ya pero, con el case, no tendría que hacer eso que quiero? Se activa el timer, y solo abre el que el case le diga, no? Y si no, no se como podría hacerlo. Porque si tengo que abrir edit(x).text no se como insertar x en vez de número. Y gracias de nuevo por la ayuda. Es casi inmediata.
Nota: He cambiado a halt. Ahora funciona el que se cierre la aplicación. |
#5
|
||||
|
||||
Vuélve a leer mi post, he cambiado una cosa que tenía mal
![]() Sobre el primer fallo, no era del código, sino una pequeña nota a lo que habías puesto, pues case no es un bucle, sino lo que se llama control de flujo. Sólo un pequeño detalle sobre el nombre de las cosas. Sobre el segundo, no es un fallo, sino una pequeña duda que tengo. El 3º es crucial para tu problema. No se abren todas de golpe, sino que con un milisegundo de diferencia, por eso no se aprecia. Cambia el valor a 35000 (35 mseg = 35 seg). Jeje, es que hoy es domingo ![]() Salu2. |
#6
|
||||
|
||||
El problema rauros es que tu en el evento OnClick del botón 2 estás pasando un intervalo de 1 milisegundo... debes indicarle que sea de 35 segundos.
Por lo otro que dices sobre Edit(X) no entiendo... ¿Que es lo que deseas? Además no veo de donde sale x e y... ¿Para que son? Si explicases el problema... Saludos, |
#7
|
||||
|
||||
Nos adelantamos dec y yo
![]() Cita:
Según lo entiendo, claro. Por supuesto que hay mejores formas de hacer esto, pero dejemos respirar un poco a rauros ![]() Salu2. |
#8
|
|||
|
|||
Okey. Voy a explicarlo todo lo que pueda:
Edit1 - Edit20 son huecos en los que se ponen los links que quiera abrir. Edit21 es el número de páginas que vamos a abrir. x es integer. Cada pagina abierta se le suma 1 para saber por que página va. y es edit21 pero traducido a integer (StrToInt). Función del programa: Abrir páginas de una en una cada 35 segundos, a excepción de la primera, que será inmediata. El tiempo empieza a contar desde que aprieto el botón button2. Cuando acaba de abrirse todas las páginas, se cierra la aplicación. |
#9
|
|||
|
|||
Vale parece que ya funciona. Cambié el milisegundo por los treinta y cinco mil.
|
#10
|
||||
|
||||
Bueno rauros, debería funcionarte.
Con poner el intervalo en el button2 en 35 segundos debería funcionar. Por el tema de cerrar la aplicación una vez que termine debes hacer algo asi:
Saludos, |
#11
|
|||
|
|||
No hace falta, ya lo solucioné con halt; después de else pero gracias por la preocupación.
|
#12
|
||||
|
||||
A ver si te gusta esta alternativa:
Coloca un TMemo, un TTimer y un TButton.
Ahora sólo tendrás que escribir las páginas en el Memo1 (sin dejar renglones en blanco). No tendrás la limitación de 20 páginas, ni tendrás que escribir la cantidad en un edit. Además, podrías poner otro edit, para indicar el tiempo (en segundos) de espera. Sólo tendrías que cambiar una cosa:
¿Te gusta? Salu2 ![]() |
#13
|
||||
|
||||
Y bueno ya que andamos... también podemos usar otra variante (aprovechando el Memo): abrir un archivo que contenga estos datos.
E incluso podemos eliminar el timer y aún asi hacer que cada 35 segundos se visite una página. ¿O no ixMike ![]() Saludos, |
#14
|
|||
|
|||
Bueno bueno, ya terminé de compilarlo y todo. He visto tu código ixMike, pero como hay cosas que no comprendo aun lo he dejado como yo lo he hecho. Muchísimas gracias.
|
#15
|
||||
|
||||
Cita:
y también hacer un programa sin ventana, que lea de un archivo los datos, tanto las páginas como el tiempo de espera. Sería algo así: dos archivos, MiniUnidad.pas, y MuestraPaginas.dpr
No lo he comprobado, pero debería funcionar. ![]() Salu2 ![]() Última edición por ixMike fecha: 24-02-2008 a las 19:38:11. Razón: corregir algunos fallos |
#16
|
|||
|
|||
No se que decir. Bravo xD. Y como funcionaría? Debo crear un archivo de texto y ponerle que nombre? Y cada linea sería una página web?
|
#17
|
||||
|
||||
Bueno, tiene algún fallo, pues no se ejecuta nada, ¿a alguien se le ocurre qué puede ser?
![]() |
#18
|
|||
|
|||
No se. Yo desde cero solo se hacer programas con Turbo Pascal XD... Los demás tienen que tener las propiedades principales de unit y eso creadas ya.
|
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Bucle for de 2 en 2 | douglas | OOP | 9 | 17-10-2007 15:55:53 |
bucle infinito | emeceuy | Varios | 10 | 20-07-2007 20:28:55 |
Problema en bucle | CarmaZone | Tablas planas | 6 | 20-01-2006 09:51:20 |
bucle dentro de un bucle | Cosgaya | Varios | 2 | 06-06-2005 07:05:16 |
problema con bucle while do | acrophet | Varios | 1 | 16-09-2004 14:13:02 |
![]() |
|