Buenos días,
Vengo bregando con ese tipo de error desde hace eones
En mi caso se produce con excel.
Es exactamente el mismo caso: Se produce un error de methodo porque el argumento es ¡ inesperadamente un array !
He hecho investigaciones.
Mr. Rao lo medio solventa con SysRefresh()
Yo hago una mezcla de varias cosas: hb_gcall(.t.); SysRefresh() más una funcion lRetryTry(bBlock, nVeces) consistente en ejecutar un bBlock con el codigo de marras protegido contra errores y que se reintentara un determinado numero de nVeces. Esa funcion la utilizo intensamente
CONCLUSION, a falta de opinion de los creadores: En Harbour cuando se hace un uso intensivo de memoria, ésta se degrada y empieza a devolver valores erroneos
Salu2
PD 1. Comentar la indefension que me ha producido este error desde hace lustros sin apenas documentacion y que no creo que sea fruto de una mala programacion, en mi caso, excel, irresoluble con hb_gcall(.t.); SysRefresh() porque me pareciera que el problema siempre ha estado en el modulo Harbour de enlace con la interfaz OLE que debe estar generando leaks de memoria
PD 2. Observé que al menos algunas veces el problema se produce al devolver valores en una funcion.
Ejemplo 1: Esto SI funcionará
- Code: Select all Expand view
o:= win_oleCreateObject("Excel.Aapplication")
Ejemplo 2: Esto podria no funcionar
- Code: Select all Expand view
o:= funX()
FUNCTION FunX()
Local o
o:= win_oleCreateObject("Excel.Aapplication")
return o // <------- Aquí se le da la vuelta y lo que es un objeto se convierte en un array de dos posiciones