Page 1 of 1

QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 4:20 pm
by GUSPRE
Antonio,

Me he encontrado con un error que no entiendo en la migración a FWH 8.12 xh uso ASAVE y AREAD para grabar en archivos planos arrays multidimensionales, ,los grabo pero al leerlos ahora AREAD me devuelve cualquier cosa por ejemplo

Code: Select all  Expand view
LOCAL  a_pru:={{"","",""},{"","",""},{"","",""}}
LOCAL a_tmp

c_dat:=ASAVE(a_pru)
a_tmp:=AREAD(c_dat)
MSGINFO(LEN(a_tmp))



EL msginfo devuelve 11329 items en a_tmp ?? que paso cambio esta funciones,

Tenemos grabados en archivos array con formatos de impresión que debemos recuperar esto es urgente...

Saludos,

Re: QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 4:47 pm
by GUSPRE
NO SE SI A ALGUIEN LE PASO PERO ENCONTRE DENTRO DE WINDOWS.PRG
Code: Select all  Expand view
function ARead( cInfo )

   local nPos := 1, nLen, n
   local aArray, cType, cBuffer


Veran que nPos esta definido como 1,
bien cambiando este parametro a 4 funciona correctamente, esto comparado con un WINDOWS.PRG de versiones anteriores, de hecho he generado una nueva funcion AREAD_2 como la siguiente para no tocar el codigo original de FWH y he reemplazado todas las funciones AREAD por AREAD_2,

Nueva funcion,

Code: Select all  Expand view
//----------------------------------------------------------------------------//

function ARead_2( cInfo )

   local nPos := 4, nLen, n
   local aArray, cType, cBuffer

   nLen   = Bin2I( SubStr( cInfo, nPos, 2 ) )
   nPos  += 2
   aArray = Array( nLen )

   for n = 1 to Len( aArray )
      cType = SubStr( cInfo, nPos++, 1 )
      nLen  = Bin2I( SubStr( cInfo, nPos, 2 ) )
      nPos += 2
      cBuffer = SubStr( cInfo, nPos, nLen )
      nPos += nLen
      do case
         case cType == "A"
              aArray[ n ] = ARead_2( "A" + I2Bin( nLen ) + cBuffer )

         case cType == "O"
              aArray[ n ] = ORead( cBuffer )

         case cType == "C"
              aArray[ n ] = cBuffer

         case cType == "D"
              aArray[ n ] = CToD( cBuffer )

         case cType == "L"
              aArray[ n ] = ( cBuffer == ".T." )

         case cType == "N"
              aArray[ n ] = Val( cBuffer )
      endcase
   next

return aArray



Espero le sirva a alguien,
Saludos,

Re: QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 8:12 pm
by Antonio Linares
Gustavo,

Si, esos cambios se han hecho para la construccion del IDE visual.

Me alegro de que hayas podido solucionarlo para mantener la compatibilidad.

Re: QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 9:55 pm
by GUSPRE
Estimado Antonio,

Me pregunto cuantos cambios se han realizado y en que funciones, ya que hace 2 semanas estamos probando cada funcion de la aplicación para ver si funciona al igual que con los compiladores viejos. Hay algún registro de los cambios que se realizan de versióna versión del compilador ?

Gracias

Saludos,

Re: QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 10:05 pm
by Antonio Linares
Gustavo,

Los cambios siempre se detallan en el fichero FWH\whatsnew.txt.

En la version 8.12 se explico:
"* New: We are doing many changes and enhacements for the development of the free Visual IDE."

Siempre entendiendo que la primera prioridad es mantener compatibilidad con versiones anteriores. No podiamos pensar que ese cambio pudiese afectar a alguna aplicacion, pero ha ocurrido asi en tu caso. Te pedimos disculpas.

Re: QUE CAMBIO EN LA VERSION 8.12 XH ASAVE() AREAD()

PostPosted: Thu Jan 15, 2009 10:11 pm
by GUSPRE
Querido Antonio,

No hay de que disculparse, estoy de acuerdo en simpre seguir ampliando la capacidad de FWH, yo no lo cambio por ningun otro, solo es que estas mudanzas de versiones, hacen a veces volverse loco buscando que paso, de todas maneras adelante con FWH!!!

Saludso,