FoxPro/Visual FoxPro - ASCAN para un arreglo multidimensional

   
Vista:

ASCAN para un arreglo multidimensional

Publicado por DALSOM DALSOM@YAHOO.COM (609 intervenciones) el 01/10/2013 20:34:52
Hola a todos,

Como hago para buscar dentro de un arreglo de mas de una dimension?

por ejemplo tengo este :

DIMENSION arr(2,3)
arr(1,1) = 1
arr(1,2) = 'ABC'
arr(1,3) = 'alfabeto'
arr(2,1) = 2
arr(2,2) = 'Tri'
arr(2,3) = 'figura'


Y quiero bucar la cadena "ABC" en este arreglo, pero, ASCAN solo me busca en arreglos unidemensionales, y para hacerlo con multiples dimensiones no explica bien como hacerlo.

Alguna idea?

Gracias,
Dalsom.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

ASCAN para un arreglo multidimensional

Publicado por DALSOM (609 intervenciones) el 01/10/2013 21:39:48
Listo, la configuracion basica funciona, el unico detallito, que no he logrado hacer,
es que me tome el flag, que al parecer no me esta funcionando bien, ya que por defecto, es case sensitive.

Esto, no me permite buscar por un skel de la cadena, es decir, dentro de mi arreglo, quiero buscar la cadena "beto" que esta dentro de uno de los elementos, pero si el flag no me funciona no puedo hacerlo, y por tanto no puedo construir mi function con ascan().

Por el momento con Ascan(miarr,exp)>0 puedo evaluar lo que deseo.

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

ASCAN para un arreglo multidimensional

Publicado por Mauricio (1368 intervenciones) el 01/10/2013 23:32:55
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
DIM arr(2,3)
PUBLIC Bandera, buscar    && por defecto es .F.
Buscar = 'ABC'
*----  Primer bucle, el mas externo
FOR I = 1 TO 2
      FOR J = 1 TO 3
            IF arr(I,J) = &Buscar
                Bandera = .T.
            ENDIF
      ENDFOR
ENDFOR
*
IF Bandera
    wait wind 'Si encontro coincidencia: ' + Buscar
ENDIF
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ASCAN para un arreglo multidimensional

Publicado por Fidel (558 intervenciones) el 02/10/2013 00:01:18
DIMENSION arr(2,3)
arr(1,1) = 1
arr(1,2) = 'ABC'
arr(1,3) = 'alfabeto'
arr(2,1) = 2
arr(2,2) = 'Tri'
arr(2,3) = 'figura'

nas=ASCAN(arr,"ABC")
MESSAGEBOX(NAS) && 2
messagebox( arr[nas-1])
Messagebox( arr[nas+1])

NAS=ASCAN(ARR,"Tri")
MESSAGEBOX(NAS) && 5


nas=ASCAN(arr,"abc",1,0,2,5)
MESSAGEBOX(NAS) && 2

Ascan() retorna el número de elemento encontrado o cero si no encuentra coincidencias.
En el array multidimensional, puedes referirte a los restantes elementos por la posición.
En el caso planteado, estás buscando una cadena de la columna 2 y si necesitas el valor de la columna 3 en la misma fila donde se encontró la cadena buscada, será el el elemento siguiente, o sea, Nas + 1. Si necesitas el valor de la columna 1, será nas - 1

El Flag 5 (1+4) sobrescribe el estado de SET EXACT, que puede impedirte encontrar lo que buscas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de José Luis

ASCAN para un arreglo multidimensional

Publicado por José Luis (16 intervenciones) el 18/02/2016 23:34:49
Las dos respuestas me parecen aceptables. La más sencilla de aplicar es la que utiliza el comando SCAN. La valoración dice 1, debió ser 8. No me permite modificar la valoración que hicé.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar