Definir una variable en otro procedimiento o función
Posted: Thu Jan 08, 2015 4:00 pm
Trabajo con linux harbour y five linux y mi consulta es como puedo definir una variable en otro procedimiento.
Se puede hacer?
Adjunto el código que entra en un loop porque no existe en el procedimiento Main la variable mivariable.
function Main()
LOCAL oError := ferrorsys()
?mivarible
Return .T.
#include "error.ch"
#define NTRIM(n)( LTrim(Str(n)) )
Proc ferrorsys(_swE)
Return ( ErrorBlock( {|e| DefError(e,_swE)} ) )
static func DefError(e,l)
Loca i, cMenssageInf, cDefVariable
cMessageInf := ErrorMessage(e)
cMessage := cMessageInf
if 'Error BASE/1003'$cMessageInf
cDefVariable:=substr(cMessageInf,at(':',cMessageInf)+2)
?cDefVariable
store 'Hola' to &cDefVariable
?&cDefVariable
Return (.T.)
endif
return (.f.)
static func ErrorMessage(e)
loca cMessage
// start error message
cMessage := if( e:severity > ES_WARNING, "Error ", "Warning " )
// add subsystem name if available
if ValType(e:subsystem) == "C"
cMessage += e:subsystem()
else; cMessage += "???"; end
// add subsystem's error code if available
if ValType(e:subCode) == "N"
cMessage += ("/" + NTRIM(e:subCode))
else; cMessage += "/???"; end
// add error description if available
if ValType(e:description) == "C"
cMessage += (" " + e:description)
end
// add either filename or operation
if !Empty(e:filename)
cMessage += (": " + e:filename)
elseif !Empty(e:operation)
cMessage += (": " + e:operation)
end
return (cMessage)
Se puede hacer?
Adjunto el código que entra en un loop porque no existe en el procedimiento Main la variable mivariable.
function Main()
LOCAL oError := ferrorsys()
?mivarible
Return .T.
#include "error.ch"
#define NTRIM(n)( LTrim(Str(n)) )
Proc ferrorsys(_swE)
Return ( ErrorBlock( {|e| DefError(e,_swE)} ) )
static func DefError(e,l)
Loca i, cMenssageInf, cDefVariable
cMessageInf := ErrorMessage(e)
cMessage := cMessageInf
if 'Error BASE/1003'$cMessageInf
cDefVariable:=substr(cMessageInf,at(':',cMessageInf)+2)
?cDefVariable
store 'Hola' to &cDefVariable
?&cDefVariable
Return (.T.)
endif
return (.f.)
static func ErrorMessage(e)
loca cMessage
// start error message
cMessage := if( e:severity > ES_WARNING, "Error ", "Warning " )
// add subsystem name if available
if ValType(e:subsystem) == "C"
cMessage += e:subsystem()
else; cMessage += "???"; end
// add subsystem's error code if available
if ValType(e:subCode) == "N"
cMessage += ("/" + NTRIM(e:subCode))
else; cMessage += "/???"; end
// add error description if available
if ValType(e:description) == "C"
cMessage += (" " + e:description)
end
// add either filename or operation
if !Empty(e:filename)
cMessage += (": " + e:filename)
elseif !Empty(e:operation)
cMessage += (": " + e:operation)
end
return (cMessage)