Página 1 de 1

While dentro de un While

Publicado: 10 Ago 2011, 09:51
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.

Re: While dentro de un While

Publicado: 10 Ago 2011, 10:00
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.

Re: While dentro de un While

Publicado: 10 Ago 2011, 11:00
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

Re: While dentro de un While

Publicado: 10 Ago 2011, 14:22
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.

Re: While dentro de un While

Publicado: 11 Ago 2011, 08:07
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.