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)
Definir una variable en otro procedimiento o función
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Definir una variable en otro procedimiento o función
Jorge,
La única solución que se me ocurre es usar una variable pública que haya sido creada previamente en otro procedimiento, pero el usar variables públicas es una práctica muy poco recomendable.
De hecho uno de los grandes avances de Clipper 5 fué el proporcionar variables locales y static para evitar el uso de variables public.
La única solución que se me ocurre es usar una variable pública que haya sido creada previamente en otro procedimiento, pero el usar variables públicas es una práctica muy poco recomendable.
De hecho uno de los grandes avances de Clipper 5 fué el proporcionar variables locales y static para evitar el uso de variables public.
Re: Definir una variable en otro procedimiento o función
Antonio, logre solucionarlo agregando a mi errorsys.prg:Antonio Linares wrote:Jorge,
La única solución que se me ocurre es usar una variable pública que haya sido creada previamente en otro procedimiento, pero el usar variables públicas es una práctica muy poco recomendable.
De hecho uno de los grandes avances de Clipper 5 fué el proporcionar variables locales y static para evitar el uso de variables public.
#IfDef __SQL__
if 'Error BASE/1003'$cMessageInf
cDefVariable:=substr(cMessageInf,at(':',cMessageInf)+2)
if (vValorVariable:=fField_SQL(cDefVariable))!=NIL
__qqPub( cDefVariable )
store vValorVariable to &cDefVariable.
Return (.T.)
endif
endif
#Endif
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: Definir una variable en otro procedimiento o función
Jorge,
Es una solución nada aconsejable, pero si te sirve...
Es una solución nada aconsejable, pero si te sirve...