On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO()
Procedure CtrlErrores
PARAMETER merror, mess, mess1, mprog, mlineno
Messagebox('Se genero un error grave en el sistema, por favor contacte al administrador y reportar este mensaje.'+CHR(13)+CHR(13)+;
'Error número: ' + Chr(13) + Alltrim(STR(merror)) + Chr(13) + Chr(13) +;
'Mensaje del error: ' + Chr(13) + Mess + Chr(13) + Chr(13) +;
'Linea de codigo con error : ' + Chr(13) + Message(1)+ Chr(13) + Chr(13) +;
'Error en el numero de linea : ' + Chr(13) + LTRIM(STR(mlineno)) + Chr(13) + Chr(13)+;
'Programa que genera el error : ' + Chr(13) + mprog + Chr(13) + Chr(13) +;
'El proceso ejecutado se ha cancelado, por favor vuelva a intentarlo.' ;
,16,"cTitMes")
RETURN TO MASTER
Endproc
--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo, envía un mensaje a:
mundovisualfox...@googlegroups.com
---
Has recibido este mensaje porque estás suscrito al grupo "Mundo Visual FoxPro" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), (Definir Variable de ctitmes que es el titulo)
Procedure CtrlErrores
PARAMETER merror, mess, mess1, mprog, mlineno
Messagebox('Se genero un error grave en el sistema, por favor contacte al administrador y reportar este mensaje.'+CHR(13)+CHR(13)+;
'Error número: ' + Chr(13) + Alltrim(STR(merror)) + Chr(13) + Chr(13) +;
'Mensaje del error: ' + Chr(13) + Mess + Chr(13) + Chr(13) +;
'Linea de codigo con error : ' + Chr(13) + Message(1)+ Chr(13) + Chr(13) +;
'Error en el numero de linea : ' + Chr(13) + LTRIM(STR(mlineno)) + Chr(13) + Chr(13)+;
'Programa que genera el error : ' + Chr(13) + mprog + Chr(13) + Chr(13) +;
'El proceso ejecutado se ha cancelado, por favor vuelva a intentarlo.' ;
,16,cTitMes)
RETURN TO MASTER
Endproc
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ctitmes
%207.53.58.png?part=0.1&view=1)
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ===> ctitmes <=== Esto es un invento tuyo.
ON ERROR [Command]
Parámetros
Si el comando especifica un procedimiento a ejecutar cuando se produce un error, puede utilizar ERROR( ), MESSAGE( ), LINENO( ) y PROGRAM( ) para pasar el número de error, el mensaje de error, el número de línea del programa y el nombre del programa al procedimiento. Esta información puede utilizarse para corregir la causa del error.
Procedure CtrlErrores
PARAMETER merror, mess, mess1, mprog, mlineno, lctitmes
Messagebox('Se genero un error grave en el sistema, por favor contacte al administrador y reportar este mensaje.'+CHR(13)+CHR(13)+;
'Error número: ' + Chr(13) + Alltrim(STR(merror)) + Chr(13) + Chr(13) +;
'Mensaje del error: ' + Chr(13) + Mess + Chr(13) + Chr(13) +;
'Linea de codigo con error : ' + Chr(13) + Message(1)+ Chr(13) + Chr(13) +;
'Error en el numero de linea : ' + Chr(13) + LTRIM(STR(mlineno)) + Chr(13) + Chr(13)+;
'Programa que genera el error : ' + Chr(13) + mprog + Chr(13) + Chr(13) +;
'El proceso ejecutado se ha cancelado, por favor vuelva a intentarlo.' ;
,16,lctitmes)
RETURN TO MASTER
Endproc
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ctitmes
La variable cTitMes es privada dentro de la forma, por eso al pasarla dentro del on error no se ve, eso tiene el problema de que al haber varias formas activas en ese momento, cuál sería el cTitMes activo?, no tendrías como saberlo, creo que debes usar otra forma para reconocer donde te encuentras en ese momento y tomarlo para el on error
Set Procedure To "progs\FDUS"
FINDVER() && Verifica e inicia el programa
DO 'INNO201301.EXE' && Ejecuta el programa
FINDVER() && Verifica e inicia el programa
launchProgram("INNO201301.EXE")
*DO 'INNO201301.EXE' && Ejecuta el programa
* Fuente: Victor Espina
* Base: Grupos Mundo Visual FoxPro Google
* Enlace: https://groups.google.com/forum/#!topic/publicesvfoxpro/bMeX_q7c1Mg
PROCEDURE launchProgram(pcProgramLocation)
*
LOCAL cCurrentFolder,cProgramFolder
cCurrentFolder = SET("DEFAULT") + CURDIR()
cProgramFolder = JUSTPATH(pcProgramLocation)
LOCAL oWSH
oWSH = CREATEOBJECT("WScript.Shell")
SET DEFAULT TO (cProgramFolder)
oWSH.Run(pcProgramLocation,0,.T.)
SET DEFAULT TO (cCurrentFolder)
*
ENDPROC
A veces me pregunto por qué la gente inventa cosas jejeVeo esto en tu código:
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ===> ctitmes <=== Esto es un invento tuyo.
La ayuda no indica que se pueda poner un parámetro adicional al comando ON ERROR.
ON ERROR [Command]Supongo que el error que te da el compilador es bastante obvio.
En este caso, VFP no te permite poner parámetros adicionales en una instrucción nativa.
Saludos!
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ===> ctitmes <=== Esto es un invento tuyo.
ON ERROR [Command]
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), ctitmes
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO(), cTitMes
Procedure CtrlErrores
PARAMETER merror, mess, mess1, mprog, mlineno, mTitMes
Messagebox('Se genero un error grave en el sistema, por favor contacte al administrador y reportar este mensaje.'+CHR(13)+CHR(13)+;
'Error número: ' + Chr(13) + Alltrim(STR(merror)) + Chr(13) + Chr(13) +;
'Mensaje del error: ' + Chr(13) + Mess + Chr(13) + Chr(13) +;
'Linea de codigo con error : ' + Chr(13) + Message(1)+ Chr(13) + Chr(13) +;
'Error en el numero de linea : ' + Chr(13) + LTRIM(STR(mlineno)) + Chr(13) + Chr(13)+;
'Programa que genera el error : ' + Chr(13) + mprog + Chr(13) + Chr(13) +;
'El proceso ejecutado se ha cancelado, por favor vuelva a intentarlo.' ;
,16, mTitMes ) &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"cTitMes")
RETURN TO MASTER
Endproc
On ERROR DO CtrlErrores WITH ;
ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO() &&&&&&&&&&&&&&&&&&, cTitMes
Procedure CtrlErrores
PARAMETER merror, mess, mess1, mprog, mlineno
Messagebox('Se genero un error grave en el sistema, por favor contacte al administrador y reportar este mensaje.'+CHR(13)+CHR(13)+;
'Error número: ' + Chr(13) + Alltrim(STR(merror)) + Chr(13) + Chr(13) +;
'Mensaje del error: ' + Chr(13) + Mess + Chr(13) + Chr(13) +;
'Linea de codigo con error : ' + Chr(13) + Message(1)+ Chr(13) + Chr(13) +;
'Error en el numero de linea : ' + Chr(13) + LTRIM(STR(mlineno)) + Chr(13) + Chr(13)+;
'Programa que genera el error : ' + Chr(13) + mprog + Chr(13) + Chr(13) +;
'El proceso ejecutado se ha cancelado, por favor vuelva a intentarlo.' ;
,16, M.cTitMes )
RETURN TO MASTER
Endproc
me parece que hay que prever que al momento de producirse el error, la variable cTitMes debe existir, si no, va a dar error la sentencia do que se puso en el on error.
El on error es global, entonces esta vigente en todos lados.
Si esa variable al momento de un error en otro lado no se definió. fuiste.
Saludos: Miguel, La Pampa (RA)
Disculpen que me meta, pero les recuerdo que VFP es OOP y al haber la posibilidad de que puedas invocar una forma desde otra hace que al estar en cualquier forma, la variable pública “cTitMes” tenga es el valor de la última forma invocada, pero, imaginemos que llamé 3 formas diferentes una detrás de otra o desde un menú X y se deja un proceso activo en alguna de ellas, pero ya no me encuentro en ella por que cambie el focus?
En ese momento cTitMes, no necesariamente tiene la forma que da el problema, sino la de la última forma que lo actualizó, por lo que el error pudiera mostrar una forma que no es la que genera la falla!. Ahora, alguien me explica para que quieren hacer eso?
De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Carlos Miguel FARIAS
Enviado el: viernes, 11 de octubre de 2013 05:35 a.m.
Para: mundovisualfoxpro
Asunto: Re: [Mundo Visual FoxPro] Detener Proceso desde de un ERROR
me parece que hay que prever que al momento de producirse el error, la variable cTitMes debe existir, si no, va a dar error la sentencia do que se puso en el on error.
A partir de la versión 9 hay una función que te devuelve la pila de llamadas. Al momento del error, la invocas y te es la pista de donde se planto. Program también devuelve los programas pero no con la data tan completa.
Saludos:Miguel, La Pampa (RA)