Estoy intentando migrar un programa a Harbour.
Pero en el mismo codigo donde xHarbour trabaja bien, Harbour, a veces, se le va la cabeza y da error.
Es algo relacionado a parametros y codeblocks. Se me ha dado ya algunas veces.
Un parametro, en este caso array, no recuerdo si de otro tipo tambien da problema, llega un momento que pierde su valor y se pone a NIL
El escenario para producir el error es mas o menos asi:
- Code: Select all Expand view RUN
- FUNCTION Noname()
Local nI
Local a:= {"algo"}
FOR nI:= 1 TO 100
NoName2(a)
NEXT
RETURN NIL
FUNCTION NoName2(a)
Local b:= {|| msginfo( Str(len(a)) ) } // <----- Aqui la variable a, llegado un momento determinado, sin razón alguna, tiene el valor NIL
Eval(b)
RETURN NIL
En cambio, si el parametro lo asigno a local, el problema desaparece.
- Code: Select all Expand view RUN
- FUNCTION Noname()
Local nI
Local a:= {"algo"}
FOR nI:= 1 TO 100
NoName2(a)
NEXT
RETURN NIL
FUNCTION NoName2(aPar)
Local a:= aPar // <--- Esta asignacion del parametro renombrado como variable local hace que ya no se produzca error.
Local b:= {|| msginfo( Str(len(a)) ) }
Eval(b)
RETURN NIL
Mayormente lo pregunto por si a alguien le ha pasado.
Saludos