Page 1 of 1

Array y NIL

PostPosted: Thu May 04, 2006 12:46 pm
by goosfancito
Estimados,

Code: Select all  Expand view
function main()
   LOCAL aVector:= {}
   LOCAL nFila:= 0
   LOCAL nColumna:= 0

   PUBLIC aMatriz:= {}

   FOR nFila:= 1 TO 10
      aVector:={}
      ASize( aVector, 4)
      AAdd( aMatriz, aVector )
   NEXT nFila

   for nFila:= 1 to 10

       for nColumna:= 1 to 4
          if aMatriz[ nFila ][ nColumna ] == NIL
             ? "es nil", nFila, nColumna                         // Renglon A
          else
             ? "Fila", nFila, ;
                "Columna", nColumna,;
                "valor",  aMatriz[ nFila ][ nColumna ]
          endif
   next nFila

return ( nil )

Bueno, aca va mi pregunta, porque el código de arriba, cuando nFila = 1 y nColumna = 1 el valor el NIL ( renglon A ) y en cambio todos los demas valores son diferentes a nil?

Gracias.

PostPosted: Thu May 04, 2006 2:06 pm
by Raymundo Islas M.
Hola, que valor te devuelve ?

Oye, no veo el next de nColumna :shock:

De rapido hice esto, y todos me devuelven NIL :

LOCAL nQ, nW, aDmArrX := {}

FOR nQ := 1 TO 10
AaDd( aDmArrX, Array(4) )
NEXT
FOR nQ := 1 TO Len( aDmArrX )
FOR nW := 1 TO Len( aDmArrX[nQ] )
? IIF( aDmArrX[nQ,nW] == NIL, "es nil", "no es nil" )
NEXT
NEXT


Saludos

PostPosted: Thu May 04, 2006 2:13 pm
by goosfancito
Amigo,

Tenes razon con respecto al Next de columna.

Asi como pones el ejemplo si funciona, pero fijate que es diferente al mio, ya que uso un vector redimencionado, de ultima si me haces el favor, copia este codigo ( ahora le pongo el next que faltaba) y probalo.

Gracias.

Code: Select all  Expand view
function main()
   LOCAL aVector:= {}
   LOCAL nFila:= 0
   LOCAL nColumna:= 0

   PUBLIC aMatriz:= {}

   FOR nFila:= 1 TO 10
      aVector:={}
      ASize( aVector, 4)
      AAdd( aMatriz, aVector )
   NEXT nFila

   for nFila:= 1 to 10

       for nColumna:= 1 to 4
          if aMatriz[ nFila ][ nColumna ] == NIL
             ? "es nil", nFila, nColumna                         // Renglon A
          else
             ? "Fila", nFila, ;
                "Columna", nColumna,;
                "valor",  aMatriz[ nFila ][ nColumna ]
          endif
      nColumna
   next nFila

return ( nil )

PostPosted: Thu May 04, 2006 7:36 pm
by Raymundo Islas M.
Probado !!!

Asi como lo enviaste, ya salen todos los elementos en NIL !!!!


Acerca de lo otro, es igual, puedes cambiar el numero de elementos de cada nivel, segun lo necesites, el detalle seria, si lo vas a definir desde el inicio o sobre la marcha.

Te comento, por que yo uso en muchos browses, la informacion desde arrays y en algunos casos desde las dbfs, aplicando arreglos de varios niveles.

Saludos

PostPosted: Thu May 04, 2006 7:41 pm
by goosfancito
ok, gracias pibe.

No me da a mi, voy a ver que pasa.