While dentro de un While

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Haseo
Mensajes: 15
Registrado: 07 Ago 2011, 08:45

While dentro de un While

Mensaje por Haseo »

Bueno pues, me preguntaba si se puede meter sin problemas un While dentro de otro While, ya que tengo un código, que al parecer el primer while, cuando no se cumple la condición de que lleve al otro while, si funciona, pero cuando se cumple esa condición, es como si no pasara nada. Y no veo errores... aunque bueno, tampoco soy muy bueno. Alguno ve un error?

Código: Seleccionar todo

				If ($Result >= 2 )	Then
					$idsearch = _StringBetween($line, 'item id="', '"')
					$id = $idsearch[0]
					$b = 3
					$c = $b + 1
						While $b = $c
							_FileWriteToLine($PathDir,$b,'<item id="1">',0)
							$b = $b + 1
							_FileWriteToLine($PathDir,$b,'<production id="' & $id & '" count="' & $Count1 & '"/>',0)
							$b = $b + 1
							_FileWriteToLine($PathDir,$b,'<ingredient id="' & $ItemIC & '" count="' & $Count2 & '"/>',0)
							$b = $b + 1
							_FileWriteToLine($PathDir,$b,'</item>',0)
							$c = $b
						WEnd
						$b = $b + 2
						$c = $b + 1
					ExitLoop
Es solo el If el cual al parecer no me funciona. Y Por si os preguntais a qué se debe meter los FileWriteToLine en un While:
Es debido a que eso pasa cada vez que le das a un botón, entonces uso eso para que las líneas donde escribe vayan aumentando. Porque si lo dejara sin While ni las variables que incrementan el número de línea donde escribe, al poner eso una vez queda bien, pero después tengo que poner otro con valores diferentes, y quiero que sea debajo del anterior. Entonces ahí está la razón por la cual pongo eso dentro de un While.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: While dentro de un While

Mensaje por Ximorro »

Es un poco difícil viendo el código, porque está truncado. Sólo veo un While y el IF no se ve dónde acaba.

En cualquier caso, respondiendo a tu pregunta: no hay absolutamente ningún problema en tener While dentro de While, todos los que quieras.
Tendrás algún problema con la lógica del programa, más que con las estructuras, revisa las condiciones a ver si hacen exactamente lo que quieres.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: While dentro de un While

Mensaje por Ximorro »

Bueno, a pesar de que el código estaba truncado me he puesto a mirarlo un poco, y, ejem, hay que fijarse un poquito más. No es que no haga nada, es que no deja de hacerlas: lo has metido en un bucle infinito:

Código: Seleccionar todo

                  While $b = $c
                     ;hace algunas cosas modificando $b
                     $c = $b
                  WEnd
Sí, modifica $b, pero al finalizar hace $c igual a $b, y el bucle se realiza mientras $c es igual a $b, o sea, siempre, porque justo al finalizar el bucle te aseguras de que sigan siendo iguales :smt003
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Haseo
Mensajes: 15
Registrado: 07 Ago 2011, 08:45

Re: While dentro de un While

Mensaje por Haseo »

Si me equivoqué al plantearlo, es decir, yo le daba a C el mismo valor que a B, porque tenia en la cabeza que el Loop se repetia mientras B no fuese igual a C, que es como lo he corregido. Perdona por una cuestión tan inutil.
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: While dentro de un While

Mensaje por Ximorro »

Pero si has cambiado la condición a:

Código: Seleccionar todo

While $b <> $c
           ;hace cosas
           $c = $b
WEnd
Entonces el While es inútil porque nunca repetirá el bucle, vaya, que no es un bucle. Para eso usa un IF, si no quieres que haga esas cosas cuando $b y $c sean iguales.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Responder