Devolver numero arrays encontrados!

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
Charlie19
Aprendiz de Mago
Mensajes: 30
Registrado: 12 Ene 2010, 22:59

Devolver numero arrays encontrados!

Mensaje por Charlie19 »

Hola miren tengo un error al programar que por una parta parece muy simple pero por otra es vital si no quiero que mi programa sufra un error en su ejecucion, el codigo es este

Código: Seleccionar todo

#include <String.au3>
; string ---> [b]mersi por la ayuda[/b]blalalalal[b]Thks[/b]
$a =_StringBetween($datos1,"[b]","[/b]")
 For $i = 0 To 99
	String($a[$i])

 	If @error Then
 		ExitLoop
 	Else
 		MsgBox(1,"",$a[$i])
	Endif
 	Next
;~MsgBox(1,"",$a[1])
Entonces que ocurre..Primera MsgBox me sale mersi por la ayuda, Ok, segunda MsgBox me sale Thks pero apartir de aqui no pilla lo de @error porque antees de nada ya el programa me salta y me diceee NOOOOO, LA VARIABLE $a[3] no existeee!
Entonces como puedo saber hasta que numero de arrays a encontrado si el texto yo ni lo veo osea la string se coje automaticamente y quiero que todo se haga automatico !? Ya mire en la String.au3 para ver si algo habia por alli ..pero nada
Es algo mu simple seguro pero esque no se como darle mas vueltas ... :D
Thks
Sin error no hay esfuerzo, sin esfuerzo no se programa!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Devolver numero arrays encontrados!

Mensaje por Ximorro »

¿Has mirado String.au3? Hombre, pues ahí o en la ayuda puedes ver que la función _StringBetween devuelve en el primer elemento del vector el número de strings encontrados.
Lógicamente al hacer a piñón fijo el For hasta 99 vas a pasarte del final del array y por eso te da error. Tienes que hacer:
For $i = 1 To $a[0]
...
Next


Y no mirar @error, eso aquí no sirve si ya has mirado en una posición inválida en el array.

Fíjate que empieza de 1, no de cero, porque antes de hecho además de las dos cadenas primero tenía que sacarte un "2", que es el número de resultados que ha encontrado.
Por cierto, eso de String($a[$i]) no hace nada. A parte de que no guardas el resultado en ningún sitio, $a[$i] ya es una cadena, no hay que convertirla ($a[0] sí es un número pero eso no tiene que entrar el en bucle).
Si lo hacías para capturar el error ya te digo que no sirve, porque mirar en una posición inválida de un array es un error fatal no recuperable.

Ciao
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Charlie19
Aprendiz de Mago
Mensajes: 30
Registrado: 12 Ene 2010, 22:59

Re: Devolver numero arrays encontrados!

Mensaje por Charlie19 »

xD ya sabia que eso de String(...) no servia de nada pero era para que se viera el "proceso" que intentaba simular con todo! Pero bueno si el error que tengo tubiera tan facil solucion ya no estaria asi ..eso lo digo porque _StringBetween sale asi en la ayuda
Return Value

Success: A 0 based $array[0] contains the first found string.
Failure: 0
@error: 1 - No inbetween string found.
Si ves lo que remarque dice que la $a[0] ( en mi caso) contine la primera string encontrada y no el "valor" total de todas las string encontradas :D NO funciona como los demas processo de "sacar strings o ..."; tipo StringSplit,...
Asi que si pongo MsgBox(1,"",$a[0]) me saldra el primer texto, en MsgBox(1,""$a[1]) me aparecera el 2 msg ( segun mi ejemplo) y en MsgBox(1,"",$a[3]) saltara a error...lo que quiero es hayar el total de string que no vienen dado por $variable[0] ( como normalment es..)!
Thanks!
Sin error no hay esfuerzo, sin esfuerzo no se programa!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Devolver numero arrays encontrados!

Mensaje por Chefito »

Jejejeje.....sí, Ximorro se ha confundido con la función StringSplit. Un pequeño fallo técnico que nos puede pasar a todos :smt002 .

La función que te dice el total de elementos que tiene un array es Ubound.

En este caso el for sería:

Código: Seleccionar todo

For $i = 0 To Ubound($a)-1

......................

Next
Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Charlie19
Aprendiz de Mago
Mensajes: 30
Registrado: 12 Ene 2010, 22:59

Re: Devolver numero arrays encontrados!

Mensaje por Charlie19 »

Si perdon Ximorro tienes todo el derecho de equivocarte :D I bueno era eso exactamente lo que buscaba merci Chefito i Ximorro ;)

Por mi #CLOSED xD
Sin error no hay esfuerzo, sin esfuerzo no se programa!
Avatar de Usuario
Ximorro
Profesional del Autoit
Mensajes: 1500
Registrado: 10 Jul 2009, 12:35
Ubicación: Castellón, España

Re: Devolver numero arrays encontrados!

Mensaje por Ximorro »

¡Uuuups! :smt105
No sé cómo lo he mirado, perdón no quería liar la cosa :smt059
Ciertamente la solución buena es la de Chefito.

Lo de que no sirve @error sí es cierto (y si no ya me retiro :smt002 ), eso sirve para mirar estados de error asignados por las funciones, pero un acceso a una posición no válida de un array casca inmediatamente y no se puede comprobar de esa manera.
"¿Y no será que en este mundo hay cada vez más gente y menos personas?". Mafalda (Quino)
Charlie19
Aprendiz de Mago
Mensajes: 30
Registrado: 12 Ene 2010, 22:59

Re: Devolver numero arrays encontrados!

Mensaje por Charlie19 »

No si me lo temia pero ...queria invetigar haber ... :smt044
Ahora ya lo see de cierto ..@error solo para saber que error ha devulto ;) y no para mis paraidas xDD
Gracias
Sin error no hay esfuerzo, sin esfuerzo no se programa!
Responder