Page 1 of 1

aoData no devuelve todos los datas

Posted: Wed Nov 30, 2005 12:16 pm
by fgondi
Hola foro,

aodata no devuelve los datas cuya longitud sea mayor o igual a 10 caracteres.

Code: Select all

aDatas = aOData( oObject )
He comprobado al ejecutar __ClassSel que a estos datas se anteponen el guión bajo (_Incidencia) cuando no lo tiene en la definición del data.

Code: Select all

aDatas := __ClassSel( oObject )
Esto hace que la función aoData lo eliminie del array a devolver.

Code: Select all

 function aOData( oObject )

   local aInfo  := ASort( __ClassSel( oObject:ClassH ) )
   local aData  := {}
   local n      := 1
   local lExact := Set( _SET_EXACT, .t. )

   while SubStr( aInfo[ n ], 1, 1 ) != "_"
      if AScan( aInfo, "_" + SubStr( aInfo[ n ], 1, 9 ), n + 1 ) != 0
         AAdd( aData, aInfo[ n ] )
      endif
      n++
   end

   Set( _SET_EXACT, lExact )

return aData
Es un bug de fivewin o debe hacerlo? no devería ser la comprobación SubStr( aInfo[ n ], 1, 2 ) != "__"?

Posted: Sat Dec 03, 2005 9:13 am
by Antonio Linares
Fernando,

El problema es que esa función está diseñada para Clipper en donde 9 caracteres es el máximo tamaño para reconocer una data, puesto que para asignar un valor a una data, Clipper (y [x]Harbour) anteponen un subrayado al nombre de la data.

Habría que modificar esa función para que trabaje con cualquier longitud de nombres de datas, para que funcione con [x]Harbour. Es un cambio fácil, se trata de comprobar que empiece por "_".

Posted: Sat Dec 03, 2005 12:32 pm
by fgondi
Antonio,

Gracias por tu respuesta.

Yo ya lo tengo corregido, pero no sabía que eso provocaría error si internamente fwh llama a esa función.

Posted: Sun Dec 04, 2005 11:04 am
by Antonio Linares
Fernando,

FWH no la llama, por lo que no hay problema en modificarla.