duda Aeval

duda Aeval

Postby lucasdebeltran » Mon Feb 20, 2012 3:34 pm

Hola,

Tengo un array multidimensional y quiero reemplazar los elementos que tengan nil por otra cosa.

Lo ago así:


AEVAL(aArray,;
{|cValue,n| IF(cValue = nil,;
aArray[n] := "nada",)})


Pero únicamente me cambia las cinco primeras columnas (tiene seis) de la primera línea.

¿Qué hago mal?.

Muchas gracias.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: duda Aeval

Postby cnavarro » Mon Feb 20, 2012 6:35 pm

Buenas tardes
Puede ser porque el tipo de cValue sea "A", no?, ya que el array es multidimensional y cada elemento de aArray es otro array, y AEval no lo recorre.
Espero que pueda servirte de algo y haberme explicado.
Un saludo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: duda Aeval

Postby Francisco Horta » Mon Feb 20, 2012 6:55 pm

lucas prueba asi:
aArray := { {"1","",25},;
{"2",nil,35},;
{"3","tres",45} }

hablando de un multidimensional, para valor nulo en la posicion 2 de tu arreglo:
AEVAL(aArray,;
{|cValue,n| IF( aArray[n,2] = nil .or empty(aArray[n,2]),;
aArray[n,2] := "nada",)})

te quedaria asi:
aArray := { {"1","nada",25},;
{"2","nada",35},;
{"3","tres",45} }
saludos
paco
____________________
Paco
Francisco Horta
 
Posts: 845
Joined: Sun Oct 09, 2005 5:36 pm
Location: la laguna, mexico.

Re: duda Aeval

Postby cnavarro » Mon Feb 20, 2012 7:02 pm

Buenas tardes de nuevo
Yo no he conseguido "anidar" AEval para recorrer arrays multidimensionales.
Puedes intentar hacer algo asi:

Function Prueba()
Local aTabla := { {0,0},{0,1},{0,2},{0,3},{0,4},{0,5} }

//AEVal( aTabla , { | nV , nEle | Msginfo( Str(nV[1])+Str( nEle ) ) } )
AEVal( aTabla , { | nV , nEle | Porelarray( nV ) } )
//AEVal( aTabla , { | nV , nEle | Msginfo( Str(nV[1])+Str( nEle ) ) } )
//AEVal( aTabla , { | nV , nEle | Msginfo( Str(nV[2])+Str( nEle ) ) } )

Return nil

Function Porelarray( aT ) ; Return AEVal( aT , { | nV1 , nEle1 | if( nV1 = 0, aT[nEle1] := 99, ) })
Un saludo
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6504
Joined: Wed Feb 15, 2012 8:25 pm
Location: España


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 40 guests