Page 1 of 1

uLoadObject y Blinker 6.0

PostPosted: Tue Dec 27, 2005 7:42 pm
by manuramos
Tengo un problema con Blinker 6.0 que no tenía con el 4.0
Normalmente guardo diversos arreglos con lSaveObject, pero cuando intento recuperarlos con uLoadObject, con Blinker 6.0, no dá error, pero no recupera los datos guardados.

¿Como puede ser, si con Blinker 4.0 sí los lee?

Algún parámetro de Blinker 6.0 debe de ser el culpable, pero ¿Cúal?

PostPosted: Tue Dec 27, 2005 7:44 pm
by Antonio Linares
Manuel,

has probado a comparar los ficheros salvados en disco para ver si son iguales ó existe alguna diferencia ?

uLoadObject

PostPosted: Thu Dec 29, 2005 11:01 am
by manuramos
Tengo varios programas corriendo. Todos utilizan ficheros salvados con lSaveObject y todos funcionan con Blinker 4.0, y todos fallan con Blinker 6.0 o Blinker 7.0. El caso es que no dan error de lectura, simplemente no cargan los datos.
Y lo unico que falla es uLoadObject, porque los crea bien con lSaveObject, pero esos mismo ficheros, después no lo lee.
Yo creo que pueda ser alguna variable de entorno del Blinker, pero no se cúal. Con Blinker 4.0 va bien, pero me gustaría linklar con alguna version más moderna porque supongo que gestionará mejor los recursos de memoria del ordenador. Y sino pués nada.

PostPosted: Thu Dec 29, 2005 12:22 pm
by Antonio Linares
Manuel,

¿ Que tamaño tienen los ficheros salvados en disco ?

Tambien podrias poner algunas trazas en el código fuente de uLoadObject() y ver en donde exactamente está la diferencia.

¿ Puedes proporcionarnos un ejemplo para probarlo aqui ? gracias.

PostPosted: Thu Dec 29, 2005 12:59 pm
by manuramos
ES MUY EXTRTAÑO. PARA PROBAR, HE ESCRITO AL PRINCIPIO DEL PROGRAMA LO SIGUIENTE:

LOCAL aDat := { "Banco1","Banco2","Banco3" }
LOCAL aBanc := {}

MsgAlert(LEN(aDat))

MsgAlert(LEN(aBanc))

lSaveObject(aDat,".\Datos\Prueba.Dat")

SysRefresh()

aBanc := uLoadObject(".\Datos\Prueba.Dat")

MsgAlert(LEN(aBanc))

ME DEVUELVE EL SIGUIENTE RESULTADO:

3
0
3

O SEA TODO BIEN, ME LO HA ABIERTO. SIN EMBARGO EN OTRO PUNTO DEL PROGRAMA, DENTRO DE UNA FUNCION, HE HECHO:

LOCAL aBanc := {}

aBanc := uLoadObject(".\Datos\Prueba.Dat")
SysRefresh()
MsgAlert(LEN(aBanc))

Y ME HA DADO ERROR DEL "LEN" AL EJECUTAR EL MsgAlert. COMO SI aBanc FUERA NIL.

CON "LOCAL abanc" A SECAS O CON
LOCAL aBanc := uLoadObject(".\Datos\Prueba.Dat")
TAMPOCO VA.

PERO SOLO SI LO ENLAZO CON BLINKER 6.0 O BLINKER 7.0
CON BLINKER 4.0 VA BIEN
PUEDE SER ALGUN TIPO DE PROBLEMA DE ALOCACION DE LA MEMORIA