Buenas tardes, Me estoy encontrando con un problema que no entiendo con un hash. Mi problema consiste en que el único valor del hash que no es correcto es el que es un array. Porque cuando acaba el bucle siempre muestra los valores de la última asignación que le hecho dentro del mismo. Es como si tomara la referencia a la posición de memoria del array que se le asigna en vez de los valores que contiene.
En un bucle hago algo como lo siguiente: aSalida:={} aIntervenciones:={} //array hDatos:={=>} //hash
do while hDatos["nombre"]=DBF->NOMBRE hDatos["calle"]=DBF->CALLE hDatos["intervenciones"]={} //Resetea las intervenciones para el nuevo nombre while DBF->NOMBRE == hDatos["nombre" aadd(aIntervenciones, DBF->NUMINTERV) DBF->(dbskip(+1)) enddo //Graba los datos aadd(aSalida, hDatos) enddo
xbrowse(aSalida) // Muestra distintos todos los valores del hash como hDatos["nombre"] y hDatos["calle"], pero el valor de hDatos["intervenciones"] es el mismo para todos e igual al del último registro que se procesó en el bucle.