Nombre de las variables locales

Nombre de las variables locales

Postby sergisenna » Tue Nov 19, 2013 1:59 pm

Buenos días,

He estado echando un ojo a diferentes funciones pero ninguna da el resultado que quiero. Se trata del informe de errores que se genera automáticamente cuando una aplicación falla y se genera el "error.log".
Me gustaría saber si existe alguna forma para lograr saber cuál es el nombre de las variables locales internamente en mi programa y mostrarlo en este informe de forma que se facilite la depuración de los programas.

Ejemplo:
- En uno de mis informes de errores aparece -> Local 14: N 825236739
- Lo que quiero que aparezca -> miContador: N 825236739

Gracias. Un saludo.
sergisenna
 
Posts: 10
Joined: Tue Jun 28, 2011 8:26 pm

Re: Nombre de las variables locales

Postby Carlos Mora » Tue Nov 19, 2013 4:21 pm

No se me ocurre una forma sencilla. Hasta donde sé, tanto Locals como Statics se usan por dirección que se asigna en compilación, no se utiliza el nombre o SYMBOL en tiempo de ejecución.
La única cosa que tal vez pueda dar algún tipo de solución sería si al incluir DebugInfo (/d) se incluyan en el ejecutable informacion sobre locals y statics, pero no estoy muy seguro.
Probablemente Antonio pueda decir si es posible, hay que estar muy puesto con el debugger :)
De todas maneras, si funcionase, sería excelente poder tener el nomber de las vars en el error.log.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Nombre de las variables locales

Postby sergisenna » Thu Nov 21, 2013 1:41 pm

Hola de nuevo,
He visto que en algunos errores si que aparece el nombre de algunas variables, pero no se como lo obtiene, un ejemplo es:

- Error description: Error BASE/1003 Variable does not exist: miVariable

A ver si alguien tiene alguna idea....
Gracias.
sergisenna
 
Posts: 10
Joined: Tue Jun 28, 2011 8:26 pm

Re: Nombre de las variables locales

Postby karinha » Thu Nov 21, 2013 1:52 pm

Muestra un ejemplo autocontenido de como tu haces las declaraciones de las variables> LOCAL, PRIVATE, MEMVAR Y PUBLIC en tu aplicacioón.

Salu2.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7352
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Nombre de las variables locales

Postby hmpaquito » Thu Nov 21, 2013 2:56 pm

Lo que yo pienso del tema: simple especulacion:

Tengamos en cuenta que cuando se produce un error, el nombre de la variable va contenido en oErr:Operation.
Lo que yo me imagino, es que el "variable does not exist" se saca "por descarte": descartados otros errores, se le asigna esa descripcion.
Por tanto, y a lo que vamos, el nombre de la variable es conocido porque al no haber sido declarada (Local) el compilador no la tradujo y simplemente QUEDO COMO UNA OPERACION ¡¡ DESCONOCIDA !! a la que se le asigna un texto de error por descarte.

Fin de la especulacion.

Saludos a todos
hmpaquito
 
Posts: 1482
Joined: Thu Oct 30, 2008 2:37 pm

Re: Nombre de las variables locales

Postby JmGarcia » Thu Nov 21, 2013 3:39 pm

sergisenna wrote: - Error description: Error BASE/1003 Variable does not exist: miVariable

Son los errores de CLIPPER (Guias NG fichero C52G02B.NG):

Code: Select all  Expand view
BASE/1003    Undefined variable
              (Variable no definida)

     Causa: Ha especificado una variable que no existe o que no est 
     visible.

     Soluciones:

     1. Si ha especificado un campo de base de datos, aseg£rese de que ha
        abierto el fichero de base de datos correcto y de que ha seleccionado
        el  rea de trabajo correcta. Si no desea seleccionar otra  rea de
        trabajo, anteponga a la referencia del campo el alias del  rea de
        trabajo correspondiente.

     2. Si ha especificado una variable privada o p£blica, aseg£rese de que
        la ha creado utilizando una sentencia PRIVATE o PUBLIC.

     3. Si ha especificado una referencia de variable local o est tica dentro
        de una variable macro, reordene el c¢digo para que se referencie a la
        variable directamente (las variables locales y est ticas no son
        visibles dentro de las variables macro).

     La opci¢n del compilador /W resulta muy £til para encontrar errores de
     escritura o especificaci¢n incorrecta de referencias de variables.

     Consulte tambi‚n: El cap¡tulo Conceptos B sicos de la gu¡a de
     Programaci¢n y Utilidades.


Code: Select all  Expand view
Overview -- Errores de Ejecuci¢n
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error BASE

 BASE/1001    Undefined function
 BASE/1002    Undefined alias
 BASE/1003    Undefined variable
 BASE/1004    No exported method
 BASE/1005    No exported variable
 BASE/1065    Argument error: &
 BASE/1066    Argument error: conditional
 BASE/1067    Argument error: array dimension
 BASE/1068    Argument error: array access
 BASE/1069    Argument error: array assign
 BASE/1070    Argument error: ==
 BASE/1071    Argument error: =
 BASE/1072    Argument error: <>
 BASE/1073    Argument error: <
 BASE/1074    Argument error: <=
 BASE/1075    Argument error:>
 BASE/1076    Argument error.>=
 BASE/1077    Argument error: .NOT.
 BASE/1078    Argument error: .AND.
 BASE/1079    Argument error: .OR.
 BASE/1080    Argument error: -
 BASE/1081    Argument error: +
 BASE/1082    Argument error: -
 BASE/1083    Argument error:*
 BASE/1084    Argument error: /
 BASE/1085    Argument error: %
 BASE/1086    Argument error: ++
 BASE/1087    Argument error: --
 BASE/1088    Argument error: ^^
 BASE/1089    Argument error: ABS
 BASE/1090    Argument error: INT
 BASE/1091    Argument error: WORD
 BASE/1092    Argument error: MIN
 BASE/1093    Argument error: MAX
 BASE/1094    Argument error: ROUND
 BASE/1095    Argument error: LOG
 BASE/1096    Argument error: EXP
 BASE/1097    Argument error: SQRT
 BASE/1098    Argument error: VAL
 BASE/1099    Argument error: STR
 BASE/1100    Argument error: TRIM
 BASE/1101    Argument error: LTRIM
 BASE/1102    Argument error: UPPER
 BASE/1103    Argument error: LOWER
 BASE/1104    Argument error: CHR
 BASE/1105    Argument error: SPACE
 BASE/1106    Argument error: REPLICATE
 BASE/1107    Argument error: ASC
 BASE/1108    Argument error: AT
 BASE/1109    Argument error: $
 BASE/1110    Argument error: SUBSTR
 BASE/1111    Argument error: LEN
 BASE/1112    Argument error: YEAR
 BASE/1113    Argument error: MONTH
 BASE/1114    Argument error: DAY
 BASE/1115    Argument error: DOW
 BASE/1116    Argument error: CMONTH
 BASE/1117    Argument error: CDOW
 BASE/1118    Argument error: DTOC
 BASE/1119    Argument error: CTOD
 BASE/1120    Argument error: DTOS
 BASE/1121    Argument error: TYPE
 BASE/1122    Argument error: TRANSFORM
 BASE/1123    Argument error: AADD
 BASE/1124    Argument error: LEFT
 BASE/1131    Bound error: array dimension
 BASE/1132    Bound error: array access
 BASE/1133    Bound error: array assign
 BASE/1187    Bound error: AADD
 BASE/1209    String overflow: +
 BASE/1210    String overflow: -
 BASE/1233    String overflow:  SPACE
 BASE/1234    String overflow: REPLICATE
 BASE/1340    Zero divisor: /
 BASE/1341    Zero divisor: %
 BASE/1449    Syntax error: &
 BASE/1513    Operation too complex: &
 BASE/2005    Open error
 BASE/2006    Create error
 BASE/2011    Open error (TYPE command)
 BASE/2012    Open error (COPY FILE command)
 BASE/5300    Memory low
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error TERM

 Print error
 TERM/2013    Create error (SET ALTERNATE command)
 TERM/2014    Create error (SET PRINTER command)
 TERM/2015    Open error (TO FILE clause)
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error DBFNTX

 DBFNTX/1001  Open error (.dbf)
 DBFNTX/1002  Open error (.dbt)
 DBFNTX/1003  Open error (index)
 DBFNTX/1004  Open error (creating .dbf)
 DBFNTX/1005  Open error (creating .dbt)
 DBFNTX/1006  Create error (creating index)
 DBFNTX/1010  Read error
 DBFNTX/1011  Write error
 DBFNTX/1012  Corruption detected
 DBFNTX/1020  Data type error
 DBFNTX/1021  Data width error
 DBFNTX/1022  Lock required
 DBFNTX/1023  Exclusive required
 DBFNTX/1024  Append lock failed
 DBFNTX/1025  Write not allowed
 DBFNTX/1026  Data width error
 DBFNTX/1027  Limit exceeded
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error DBFNDX

 DBFNDX/1001  Open error (.dbf)
 DBFNDX/1002  Open error (.dbt)
 DBFNDX/1003  Open error (index)
 DBFNDX/1004  Open error (creating .dbf)
 DBFNDX/1005  Open error (creating .dbt)
 DBFNDX/1006  Create error (creating index)
 DBFNDX/1010  Read error
 DBFNDX/1011  Write error
 DBFNDX/1012  Corruption detected
 DBFNDX/1020  Data type error
 DBFNDX/1021  Data width error
 DBFNDX/1022  Lock required
 DBFNDX/1023  Exclusive required
 DBFNDX/1024  Append lock failed
 DBFNDX/1025  Write not allowed
 DBFNDX/1026  Data width error
 DBFNDX/1027  Limit exceeded
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error DBCMD

 DBCMD/1001   Argument error
 DBCMD/1003   Argument error
 DBCMD/1004   Argument error
 DBCMD/1005   Argument error
 DBCMD/1006   Argument error
 DBCMD/1007   Argument error
 DBCMD/1008   Argument error
 DBCMD/1009   Argument error
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error Irrecuperable en Ejecuci¢n

 24           Write error
 331          String/array memory overflow
 332          String/array memory overflow
 415          Cannot open overlay file
 5302         Conventional memory exhausted
 5304         Conventional memory exhausted
 5306         Conventional memory exhausted
 5312         Conventional memory exhausted
 

Code: Select all  Expand view
Overview -- Mensajes de Error del Compilador
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Advertencia del Compilador

 C1001        Return statement with no value in function
 C1002        Procedure returns value
 C1003        Ambiguous variable reference
 C1004        Ambiguous variable reference, assuming memvar
 C1005        Redefinition or duplicate definition of #define
 C1007        Function does not end with RETURN
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error del Compilador

 C2001        Syntax error
 C2002        Statement undetermined at end of line
 C2003        Syntax error in statement
 C2004        Illegal character
 C2005        Statement not recognized
 C2006        Statement not allowed outside procedure or function
 C2007        Unterminated string
 C2009        Invalid use of @ (pass-by-reference) operator
 C2010        Incorrect number of arguments
 C2011        EXIT statement with no loop in sight
 C2012        LOOP statement with no loop in sight
 C2013        EXIT statement violates enclosing SEQUENCE
 C2014        LOOP statement violates enclosing SEQUENCE
 C2015        Illegal initializer
 C2016        Name conflicts with previous declaration
 C2017        Duplicate variable declaration
 C2018        Outer block variable out of reach
 C2019        CALL of CA-Clipper procedure or function
 C2020        Mistreatment of CALLed symbol
 C2021        Redefinition of CA-Clipper procedure or function
 C2022        Redefinition of predefined function
 C2023        CA-Clipper definition of CALLed symbol
 C2024        Unclosed control structures
 C2025        ELSE does not match IF
 C2026        ELSEIF does not match IF
 C2027        ENDIF does not match IF
 C2028        ENDDO does not match WHILE
 C2029        NEXT does not match FOR
 C2030        ENDCASE does not match DO CASE
 C2031        CASE or OTHERWISE is not immediately within DO CASE
 C2032        TEXT statement error
 C2033        Missing ENDTEXT
 C2034        Formal parameters already declared
 C2035        Invalid Declaration
 C2036        Mayhem in CASE handler
 C2037        Invalid procedure name in DO statement
 C2038        Invalid target name in CALL statement
 C2039        Invalid selector in send
 C2040        Invalid unary inline operator
 C2041        Invalid binary operator
 C2042        Invalid Ivalue
 C2043        Invalid alias expression
 C2044        Invalid function name
 C2045        Target name was used previously in non-CALL context
 C2046        SEQUENCE nesting error
 C2047        GET contains complex macro
 C2048        GET contains both macro and declared symbol references
 C2049        Code block contains complex macro
 C2050        Code block contains both macro and declared symbol references
 C2051        LOCAL declaration follows executable statement
 C2052        MEMVAR declaration follows executable statement
 C2053        FIELD declaration follows executable statement
 C2054        STATIC declaration follows executable statement
 C2055        Syntax error in #define
 C2056        Unexpected end of file in #define
 C2057        Label missing in #define
 C2058        Comma or right parenthesis missing in #define
 C2059        Missing => in #translate/#command
 C2060        Unknown result marker in #translate/#command
 C2061        Label error in #translate/#command
 C2062        Bad match marker in #translate/#command
 C2063        Bad result marker #translate/#command
 C2064        Bad restricted match marker in #translate/#command
 C2065        Empty optional clause in #translate/#command
 C2066        Unclosed optional clause in #translate/#command
 C2067        Too many nested #ifdefs
 C2068        Error in #ifdef
 C2069        #endif does not match #ifdef
 C2070        #else does not match #ifdef
 C2071        Error in #undef
 C2072        Ambiguous match patterns in #translate/#command
 C2073        Result pattern contains nested clauses in #translate/#command
 C2075        Too many locals
 C2076        Too many parameters
 C2077        Too many parameters
 C2078        Circular #define
 C2079        Circular #translate/#command
 C2086        RETURN violates enclosing SEQUENCE
ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ
 Mensajes de Error Grave del Compilador

 C3001        Out of memory
 C3002        Input buffer overflow
 C3003        Can't open intermediate file
 C3004        Bad command line option
 C3005        Bad command line parameter
 C3006        Can'
t create preprocessed output file
 C3007        Can't open #include file
 C3008        Bad filename in #include
 C3009        Too many nested #includes
 C3010        Invalid name follows #
 C3011        Can'
t open standard rule file
 C3012        Too many standard rules
 C3013        Expression stack overflow
 C3014        Expression stack underflow
 C3015        Control stack overflow
 C3016        Control stack underflow
 C3017        Error reading or opening script file
 C3018        Too many symbols
 C3019        Too many publics
 C3020        Too many segments
 C3021        Too many fixups
 C3022        Too many external references
 C3023        Too many labels
 C3024        Too many procs
 C3025        Too many proc requests
 C3026        Segment too big
 C3027        Proc too big
 C3028        Symbol table too big
 C3029        Write error to intermediate file
 C3030        Write error to OBJ
 C3031        Can't create OBJ
 C3032        Can'
t create intermediate file
 
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Nombre de las variables locales

Postby Carlos Mora » Sat Nov 23, 2013 7:41 pm

sergisenna wrote:Hola de nuevo,
He visto que en algunos errores si que aparece el nombre de algunas variables, pero no se como lo obtiene, un ejemplo es:

- Error description: Error BASE/1003 Variable does not exist: miVariable

A ver si alguien tiene alguna idea....
Gracias.

Creo que estás confundiendo: No obtiene ningun nombre, exactamente todo lo contrario: Has hecho referencia a un nombre(símbolo) 'miVariable' que el compilador ha supuesto que existiría como campo, public o private cuando se ejecute el código, pero cuando ha llegado a ese punto del código no ha encontrado nada que se llame miVariable, y te lo está reclamando.
Lo que se referencia por nombre en tiempo de ejecución son SOLO campos, publics y privates, el resto desaparece y solo se usa la dirección que el compilador le asigna a cada variable en el segmento de memoria correspondiente, del módulo (statics) o en la pila (locals).
Si hubieses compilado sin declaracion automática de variables, el error de variable no encontrada lo hubiese dado el mismo compilador.
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Nombre de las variables locales

Postby sergisenna » Tue Nov 26, 2013 12:42 pm

Ok, creo que lo del error (1003) concreto ha quedado claro.
Aún así no se si existirá alguna manera de conseguir lo que propuse al principio, aunque solo sea con algún tipo de variables. La propuesta era:

Ejemplo:
- En uno de mis informes de errores aparece -> Local 14: N 825236739
- Lo que quiero que aparezca -> miContador: N 825236739


Gracias por las respuestas!
sergisenna
 
Posts: 10
Joined: Tue Jun 28, 2011 8:26 pm

Re: Nombre de las variables locales

Postby Antonio Linares » Wed Nov 27, 2013 11:13 am

El compilador (Harbour) no genera nombres (que irian a la tabla de símbolos pública) para las variables locales (local) y staticas (static), a menos que compilemos con la opción /b de Harbour, que genera esa información para usar el debugger, asi que sin /b sólo son referenciados desde la tabla de símbolos local, en donde son usadas por su posición
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41410
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Nombre de las variables locales

Postby Carles » Wed Nov 27, 2013 1:37 pm

Hola,

La unica manera de obtener esta información es activando el flag /b para activar el debugger. Actualmente activaria de manera automatica el debugger de FWH, pero es muy fácil en principio obtener esta información, sin necesidad de que se nos active el debugger de FWH y obtener la información dentro de un errorsysw.prg.

El inconveniente de esta técnica es que solo es aconsejable para modos de testeo, ya que al compilar con /b, harbour realiza sus propios procesos para manejar la información de depuración, y puede ralentizar el proceso.

Básicamente tendriamos de hacer:

Poner por ejemplo en el modulo principal:
Code: Select all  Expand view
#include "FiveWin.ch"

/* Mode of __dbgEntry calls (the first parameter) */
#define HB_DBG_GETENTRY       6  /* initialize C __dbgEntry function pointer */
#define HB_DBG_ACTIVATE       7  /* activate debugger interface */

STATIC aStack

FUNCTION __dbgGetStack() ; RETU aStack

*------------------------------------------------------------------------
FUNCTION __dbgEntry( nMode, uParam1, uParam2, uParam3, uParam4, uParam5 )
*------------------------------------------------------------------------

   DO CASE

       CASE nMode == HB_DBG_GETENTRY

            __dbgSetEntry()

       CASE nMode == HB_DBG_ACTIVATE

            aStack := uParam3

   ENDCASE

RETU NIL


Luego nos podriamos crear nuestro propio errsysw.prg

Code: Select all  Expand view
#include "FiveWin.ch"

external _fwGenError   // Link FiveWin generic Error Objects Generator

#define NTRIM(n)    ( LTrim( Str( n ) ) )

//----------------------------------------------------------------------------//

// Note: automatically executes at startup

proc ErrorSys()
    ErrorBlock( { | e | ErrorDialog( e ) } )
return

//----------------------------------------------------------------------------//

static function ErrorDialog( e ) // -> logical or quits App.

   local nI, cNameVar
   local nLevel := __dbgprocLevel() - 1
   local aPila  := __dbgGetStack()[1]
   local aVar   := aPila[5]
   local cTitle := aPila[1] + ' => Function ' + aPila[2] + ' (' + ltrim(str( aPila[3])) + ')'
   local cInfo  := ''

   FOR nI := 1 TO Len( aVar )

       cNameVar  := aVar[nI][1]
       nLevelVar := aVar[nI][2]
       uVal      := __dbgvmVarLGet( nLevel , nLevelVar )

       cInfo += cNameVar + Chr( VK_TAB ) + cValToChar( uVal )
       cInfo += CRLF

   NEXT

   MsgInfo( cInfo, ctitle )

   QUIT

RETU NIL


Y Listos

Este codigo de test:

Code: Select all  Expand view
#include 'fivewin.ch'

FUNCTION Main()

    LOCAL dMiVar := Date()
    LOCAL nNace  := 1967
    LOCAL cName  := 'Charly'
    LOCAL aData  := { 1111, 2222 }

    MsgInfo( nEdad + cName )

RETU NIL


Produce este error:

Image

A partir de aqui te puedes crear tu errsysw como mas se adapte a tus encesidades, pero entiendo que esta practica es solo aconsejable para depuraciones....
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1105
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Nombre de las variables locales

Postby Carlos Mora » Thu Nov 28, 2013 3:10 pm

Carles,

En 2 palabras: im presionante.

Es cierto que puede poner las cosas un poco más pesadas, pero en desarrollo viene más que bien.

Muchas gracias por la clase de 'debugging'

Un abrazo
Saludos
Carlos Mora
http://harbouradvisor.blogspot.com/
StackOverflow http://stackoverflow.com/users/549761/carlos-mora
“If you think education is expensive, try ignorance"
Carlos Mora
 
Posts: 988
Joined: Thu Nov 24, 2005 3:01 pm
Location: Madrid, España

Re: Nombre de las variables locales

Postby Carles » Fri Nov 29, 2013 2:35 pm

Hola

Carlos -> gracias :wink:

Evidentemente solo funciona con Harbour.... :D
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1105
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: antolin and 36 guests