Foros del Web » Programando para Internet » ASP Clásico »

Problema con array y una funcion

Estas en el tema de Problema con array y una funcion en el foro de ASP Clásico en Foros del Web. Hola, he buscado por horas y horas en donde puede estar el error, pero la verdad es que no lo encontré, porque tampoco me da ...
  #1 (permalink)  
Antiguo 06/04/2005, 14:27
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Problema con array y una funcion

Hola, he buscado por horas y horas en donde puede estar el error, pero la verdad es que no lo encontré, porque tampoco me da error, sino que algo peor, no me funciona la función!, creo que hablo por todos cuando digo que cuando no funciona algo siempre es mejor que sea un error que nos salte en el explorador para aunque sea asi sabemos hacia donde orientarnos en buscarlo y corregirlo, pero ahora no puedo hacer ni eso!!.
La cuestión es que tengo un array, paises(20), en el puse los 20 paises que quiero que entren a mi pagina. La funcion se llama validar_Pais(lugar) y le paso como argumento el lugar de residencia que introduce el usuario en el formulario. Esta función lo que hace es comprobar que si el pais introducido no es uno de los que esta en el array, el formulario no será procesado. Pero el problema es que no me funciona, y lo peor de todo es que hice dos funciones más con IDENTICAS características, y esas si funcionan correctamente. Les pido que chequeen el código que les mando y alguien me de una mano. Muchas gracias de ante mano!.


Dim Paises(20)

Paises(0) = "Argentina"
Paises(1) = "Chile"
Paises(2) = "Peru"
Paises(3) = "Ecuador"
Paises(4) = "Uruguay"
Paises(5) = "Bolivia"
Paises(6) = "Brasil"
Paises(7) = "Brazil"
Paises(8) = "Venezuela"
Paises(9) = "Colombia"
Paises(10) = "Guatemala"
Paises(11) = "Mexico"
Paises(12) = "Costa Rica"
Paises(13) = "Estados Unidos"
Paises(14) = "Canada"
Paises(15) = "España"
Paises(16) = "Italia"
Paises(17) = "Holanda"
Paises(18) = "Francia"
Paises(19) = "Alemania"
Paises(20) = "Inglaterra"

function validar_Pais(lugar)

for each Pais in Paises
if InStr(lugar, CStr(Pais)) = 0 then
validar_Pais = 0
exit function
end if
next

end function

if validar_Pais(request.form("pais")) = 0 then
Response.write("El país ingresado no es válido")
else
Response.Write("El país ingresado es válido")
end if

Lo traté de mantener lo más simple posible para no llenar la página con todo el código que tengo, así que puse especialmente la parte que no me funciona y lo esencial de esta.
Muchas gracias por aunque sea haberse detenido a leer mi mensaje.
Saludos!
  #2 (permalink)  
Antiguo 06/04/2005, 14:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Puede ser que el array no este en el mismo contexto que la funcion, intenta pasarle tambien el array a la funcion:

validar_Pais(request.form("pais"), paises)

Y agrega un argumento mas a la funcion:

function validar_Pais(lugar, arrPaises)

A ver que tal
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #3 (permalink)  
Antiguo 06/04/2005, 17:32
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Gracias por contestarme U Goldman, probe con lo que me dijiste y tampoco me funciono, pero por si te interesa en seguir resolviendo esto que a mi ya en este mpomento puedo decir que me ha dado un par de dolores de cabeza, hay algo para agregarle...parece que la función me funciona únicamente con un solo elemento del Array, con el elemento Paises(20), el cual es Inglaterra. QUe cosa rara no?, al menos para un novato como yo. Es decir que si el usuario insertara Inglaterra en el formulario la función andaría correctamente, pero insertando cualquiera de los otros paises es como que si no lo reconociera. Que te parece que puede ser?, gracias nuevamente por haberme tirado una idea para solucionar este problema.
Saludos.
  #4 (permalink)  
Antiguo 06/04/2005, 17:33
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
ahhh otra cosa, lo mas extraño tambien es que tengo tres funciones que son IDENTICAS, osea lo unico que varian son los argumentos que le paso a cada una de ellas, pero en su interior no cambian nada y esas me funcionan bien. Sin dudas es raro...
  #5 (permalink)  
Antiguo 06/04/2005, 17:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
Y algo asi?

Código:
Dim Paises(20)

Paises(0) = "Argentina"
Paises(1) = "Chile"
Paises(2) = "Peru"
Paises(3) = "Ecuador"
Paises(4) = "Uruguay"
Paises(5) = "Bolivia"
Paises(6) = "Brasil"
Paises(7) = "Brazil"
Paises(8) = "Venezuela"
Paises(9) = "Colombia"
Paises(10) = "Guatemala"
Paises(11) = "Mexico"
Paises(12) = "Costa Rica"
Paises(13) = "Estados Unidos"
Paises(14) = "Canada"
Paises(15) = "España"
Paises(16) = "Italia"
Paises(17) = "Holanda"
Paises(18) = "Francia"
Paises(19) = "Alemania"
Paises(20) = "Inglaterra"

function validar_Pais(lugar, arrPaises)
  estaEnElArreglo = false
  for i = 0 to uBound(arrPaises)
    if arrPaises(i) = lugar then
      estaEnElArreglo = true
      exit For
    end if
  next
validar_Pais = EstaEnElArreglo
end function

if validar_Pais("Camerun", Paises) then
  Response.write("El país ingresado es válido")
else
  Response.Write("El país ingresado no es válido")
end if
Salu2,
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 06/04/2005, 20:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Aplausos, aplausos, aplausos!, gracias U Goldman, si llego a terminar este proyecto, tal como me lo propuse desde un principio, los créditos se lo llevarán todas las personas que me dieron una gran ayuda en este foro. El codigo que me pasaste anda perfecto, pero realmente me sigue quedando esa duda de porque no funcionaba mi código, siendo que habia hecho lo mismo con otras tres funciones y me andaban correctamente, tienes alguna idea?, realmente me ayudaste mucho U Goldman, mil gracias!
  #7 (permalink)  
Antiguo 07/04/2005, 11:28
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 23 años, 4 meses
Puntos: 98
No se, algo en la logica, pero para ser honestos no quise revisarlo

Salu2 y suerte en el proyecto!
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 07/04/2005, 13:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
ahh bueno, ya se lo que no me hacia funcionar correctamente la funcion. Era en los valores de retorno de esta, cambiandolos por valores boleanos, mantuve todo el cuerpo de la funcion igual y me funciono. Gracias U Goldman.
  #9 (permalink)  
Antiguo 07/04/2005, 14:47
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 20 años, 1 mes
Puntos: 2
Revise tu codigo

Dim Paises(20)

Paises(0) = "Argentina"
Paises(1) = "Chile"
Paises(2) = "Peru"
Paises(3) = "Ecuador"
Paises(4) = "Uruguay"
Paises(5) = "Bolivia"
Paises(6) = "Brasil"
Paises(7) = "Brazil"
Paises(8) = "Venezuela"
Paises(9) = "Colombia"
Paises(10) = "Guatemala"
Paises(11) = "Mexico"
Paises(12) = "Costa Rica"
Paises(13) = "Estados Unidos"
Paises(14) = "Canada"
Paises(15) = "España"
Paises(16) = "Italia"
Paises(17) = "Holanda"
Paises(18) = "Francia"
Paises(19) = "Alemania"
Paises(20) = "Inglaterra"

function validar_Pais(lugar)

validar_Pais = 1

for each Pais in Paises
if InStr(lugar, CStr(Pais)) = 0 then
validar_Pais = 0
exit function
end if
next

end function

if validar_Pais(request.form("pais")) = 0 then
Response.write("El país ingresado no es válido")
else
Response.Write("El país ingresado es válido")
end if


Preubalo asi, y mira la linea que dice validar_Pais = 1

Ahi creo que esta el problema, nunca le decias que SI
  #10 (permalink)  
Antiguo 07/04/2005, 14:55
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Ya voy a probar como lo has hecho y depsues te comento, pero lo que mas me llamo la atencion fue que tenia tres funciones que acutaban de la misma manera y ninguna de ellas me daba error.
SAludos y gtacias por darme otra opcion.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:46.