Autor
|
Tema: Problema con FOR (Leído 1,899 veces)
|
HJ ~
Desconectado
Mensajes: 69
|
Hola, veréis, tengo una función que se repite en VB y me obtiene una serie de variables de una cadena definida, el caso es que, por ejemplo, me obtiene las 5 primeras cadenas, pero las siguientes no me las puede obtener, me tira un error, ya que han sido alteradas, lo que quiero es que omita ese error y siga repitiendo la función FOR. Hasta ahora me tiraba un error, pero lo evado haciendo esto: errorsub: If Err Then Exit For End If
Pero eso no me sirve, ya que, para la función y, como es lógico, me para la función FOR pero no sigue adelante, mi pregunta es, como puedo hacer que se omita el error, y siga adelante? No me digais con "on error resume next" porque no se repite, me tira la ultima cadena de antes. Gracias
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Sin ver la función estamos adivinando, debe de haber una razón para ese error verdad?
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
HJ ~
Desconectado
Mensajes: 69
|
Sin ver la función estamos adivinando, debe de haber una razón para ese error verdad?
Saludos
Sin problema. For i = 0 To 788 Nombre = Split(Split(Text1.Text, "mi nombre es")(i - 1), ".")(0) List2.AddItem Nombre errorsub: If Err Then Exit For End If Next
La funcion funciona perfecto, pero si encuentr aun bache, es decir, una cadena que no contiene "Nombre" me peta. Gracias
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
Notas, no uses etiquetas (errorsub:) El código tiene varios problemas: - Te supones que el array va hasta 788, pero eso no lo sabes con certeza (o si?)
- No es eficiente, ya que con cada "vuelta" del for vuelves a hacer un split del text1.txt
- En ambos split haces referencia al primer elemento del array, pero el array puede tener o no elementos, así que se parte cuando no los tiene.
- Para i = 0 , (i - 1) = -1 = array(-1) ?
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
HJ ~
Desconectado
Mensajes: 69
|
Notas, no uses etiquetas (errorsub:) El código tiene varios problemas: - Te supones que el array va hasta 788, pero eso no lo sabes con certeza (o si?)
- No es eficiente, ya que con cada "vuelta" del for vuelves a hacer un split del text1.txt
- En ambos split haces referencia al primer elemento del array, pero el array puede tener o no elementos, así que se parte cuando no los tiene.
- Para i = 0 , (i - 1) = -1 = array(-1) ?
Saludos 1- No, tienes razón, no lo se con certeza. 2- En este caso debería separar el split entonces, no es así? 3- Exacto, el objetivo es que continúe cuando encuentre algo incorrecto 4- Eso no le des importancia lo hice porque no me cogía el primer elemento y lo debía hacer así. Espero que me puedas ayudar. Gracias
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
Aprende a no hacer en un bucle sea del tipo qué sea un proceso tras otro repetitivo si es un split o X función qué sabes te va a dar lo mismo, es mejor almacenarlo en una variable para trabajar con esta y no con la función en este caso se resume a: On Error Resume Next ' // para que ignore los errores y siga en la sucesion deseada!¡. Dim TmpArray$() Dim TmpArray2$() Dim indexOfArray& TmpArray$ = Split("mi nombre es Miguel Angel O. A.", "mi nombre es") For indexOfArray = LBound(TmpArray$) To UBound(TmpArray$) TmpArray2$ = Split(TmpArray$(indexOfArray), ".") List2.AddItem TmpArray2$(0) If Err.Number > 0 Then Err.Clear: Exit For ' // Verifica si hay error si hay sale del for next pero antes limpia el error. Next
|
|
« Última modificación: 2 Julio 2010, 21:09 pm por BlackZeroX▓▓▒▒░░ »
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
|