FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour duda Aeval
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
duda Aeval
Posted: Mon Feb 20, 2012 03: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.
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: duda Aeval
Posted: Mon Feb 20, 2012 06: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
Posts: 845
Joined: Sun Oct 09, 2005 05:36 PM
Re: duda Aeval
Posted: Mon Feb 20, 2012 06: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
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: duda Aeval
Posted: Mon Feb 20, 2012 07: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

Continue the discussion