wislow | |
| 2011-07-07 13:17 - Respuestas: 8 - Tema nº: 2804701
No es necesario. Windows XP professional Sp2....
hola a todos. me ha surgido un problema con vb6 que no entiendo, el siguiente código genera un mensaje de error: invalid call procedure. runtime error 5, o algo similar y la verdad, llevo un tiempo sin programar en vb6 y lo tengo algo oxidado. el código en cuestión es este:
private sub text4_change()
if len(text4.text) = 10 then
dim texto as string
texto = text4.text
dim counter as byte
for i = 0 to 10
for j = 0 to 10
if (mid(texto, i, 1) = mid(texto, j, 1)) then
counter = counter + 1
end if
next j
if counter >= 2 then
goto error
end if
counter = 0
next i
end if
exit sub
error:
msgbox "hay caracteres repetidos", vbcritical
text4.text = ""
exit sub
end sub
la línea que se maraca es la del if con los dos mid, y lo que se supone que debe hacer el código es saltar si en un text box hay caracteres repetidos. como se cuenta siempre desde el principio ya supongo que el contador será mínimo 1, al compararse siempre en algún momento el caracter con sí mismo, y la condición salta con contador >=2
muchs gracias de antemano y salu2
Salu2 a la plataforma BeOS/Zeta/Haiku OS | |
|
|
Digou | |
|
Re: Error en tiempo de ejecucucion 5 en VB6 - 2011-07-08 01:04 - Respuesta 2
Hola wislow.
No entiendo el por qué de tu doble paréntesis en el if. | |
|
|
wislow | |
|
Re: Error en tiempo de ejecucucion 5 en VB6 - 2011-07-08 10:43 - Respuesta 3
Hola Digou. Eso de los paréntesis... pues no es por nada en especial, pero que lo he probado sin eso y nada... la desesperación me hace ser creativo ;)
He observado que si le doy a la función mid ambos valoresconstantes, por ejermplo mid(texto, 3, 1) no me da error alguno, aunque no me sirve pues lo que quiero es que se desplace el caracter estudiado en cada iteración. ¿Puede ser que VB6 no admita que el cambien esos valores reiteradamente? Porque el error es "Invalid procedure call or argument" La llamada si son constantes me la hace, luego... sólo quedan los argumentos :S
Espero que no sea eso, porque sería una limitción absurda e improcedente, con lo que defendía yo a mi VB6 frente a Java en la universidad xD
Bueno, gracias de nuevo por el esfuerzo. Salu2
PD: Sigo abierto a nuevas aportaciones o ideas
Salu2 a la plataforma BeOS/Zeta/Haiku OS | |
|
|
wislow | |
|
Re: Error en tiempo de ejecucucion 5 en VB6 - 2011-07-08 10:52 - Respuesta 4
por cierto, en recursos visual basic he encontrado un ejemplo de uso de mid en el que toma valores que no son constantes:
dim lenfrase as integer
dim i as integer
dim caracter as string
dim texto as string
lenfrase = len(frase)
do while i | |
|
|
Digou | |
|
Re: Error en tiempo de ejecucucion 5 en VB6 - 2011-07-08 17:12 - Respuesta 5
Hola wislow.
Creo que ya sé donde está tu problema.
Las funciones que manejan Strings inician la cuenta de caracteres a partir de la posicion 1, no de la posicion 0.
Tendrías que cambiar tu contador for, para que sea de 1 to 10 y nó de 0 to 10
| |
|
|
|