compilacion
Publicado: Vie Jul 14, 2006 2:03 am
Ramón:
Acuerdate que existen 2 tipos de errores, cuando estas programando en
cualquier lenguaje, errores de SINTAXIS y errores de TIEMPO DE EJECUCION.
En este caso, por su puesto que el compilador no marca ningun error,
porque la linea es sintacticamente correcta, es decir, no hay "faltas de
ortografia" en la forma en que escribiste, por eso esa linea compila
perfectamente, sigue las reglas del lenguaje para hacer una asignacion,
utiliza los operadores correctos y por lo tanto NO HAY ERROR DE SINTAXIS
Pero si puede haber errores en tiempo de ejecucion ....aaaahhh,.... eso
es otra cosa porque puede ser que alguna de las variables que estas
usando NO ESTA DEFINIDA, NO TIENE UN VALOR COMPATIBLE o ESTA
INICIALIZADA A NIL, pero esto, el compilador no tiene forma de saberlo,
porque el valor que toman las varialbes se resuelve en tiempo de ejecucion.
Por ejemplo, el compilador no sabe que tipo de varible es cNombre, ni si
la haz definido como LOCAL, PRIVATE u otro tipo, tampoco sabe cuando le
vas a dar valor, ni que valor tiene. Vamos a analizar por partes:
Caso 1: cNombre no existe, te lo sacaste de la manga, el compilador no
tiene forma de saberlo porque en (x)Harbour al igual que en Clipper no
necesitas definir una variable previamente, por lo tanto si intentas
sumar cNombre y cNombre no existe, obviamente esa linea causa error.
Caso 2: haces un LOCAL cNombre, pero no le das ningun valor, el
compilador sabe que existe cNombre y en tiempo de ejecucion, como no
tiene ningun valor, se le da el valor de NIL, cuando tu intentas sumar
NIL a cualquier cosa, obviamente esto causa error.
Caso 3: Digamos que se te fueron las cabras al monte y en alguna parte
de tu programa hiciste cNombre := 500 y asi lo dejaste, esto es un valor
numerico que al momento de sumarse a cadenas de caracteres obviamente falla.
Entonces acuerdate, no necesariamente un error de tiempo de ejecucion
tiene que ver con que tan bien, o que tan mal escribiste el codigo fuente.
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> Tuve una linea que durante la compilacion no me marco error, pero ya en
> tiempo de ejecucion si, y el compilador no lo detecto.
>
> cCliente := cNombre + ;
> + cApellPaterno + cApellMaterno
>
> el ejemplo es hipotetico, pero asi sucede y el compilador no marca el error.
>
> Saludos.
Acuerdate que existen 2 tipos de errores, cuando estas programando en
cualquier lenguaje, errores de SINTAXIS y errores de TIEMPO DE EJECUCION.
En este caso, por su puesto que el compilador no marca ningun error,
porque la linea es sintacticamente correcta, es decir, no hay "faltas de
ortografia" en la forma en que escribiste, por eso esa linea compila
perfectamente, sigue las reglas del lenguaje para hacer una asignacion,
utiliza los operadores correctos y por lo tanto NO HAY ERROR DE SINTAXIS
Pero si puede haber errores en tiempo de ejecucion ....aaaahhh,.... eso
es otra cosa porque puede ser que alguna de las variables que estas
usando NO ESTA DEFINIDA, NO TIENE UN VALOR COMPATIBLE o ESTA
INICIALIZADA A NIL, pero esto, el compilador no tiene forma de saberlo,
porque el valor que toman las varialbes se resuelve en tiempo de ejecucion.
Por ejemplo, el compilador no sabe que tipo de varible es cNombre, ni si
la haz definido como LOCAL, PRIVATE u otro tipo, tampoco sabe cuando le
vas a dar valor, ni que valor tiene. Vamos a analizar por partes:
Caso 1: cNombre no existe, te lo sacaste de la manga, el compilador no
tiene forma de saberlo porque en (x)Harbour al igual que en Clipper no
necesitas definir una variable previamente, por lo tanto si intentas
sumar cNombre y cNombre no existe, obviamente esa linea causa error.
Caso 2: haces un LOCAL cNombre, pero no le das ningun valor, el
compilador sabe que existe cNombre y en tiempo de ejecucion, como no
tiene ningun valor, se le da el valor de NIL, cuando tu intentas sumar
NIL a cualquier cosa, obviamente esto causa error.
Caso 3: Digamos que se te fueron las cabras al monte y en alguna parte
de tu programa hiciste cNombre := 500 y asi lo dejaste, esto es un valor
numerico que al momento de sumarse a cadenas de caracteres obviamente falla.
Entonces acuerdate, no necesariamente un error de tiempo de ejecucion
tiene que ver con que tan bien, o que tan mal escribiste el codigo fuente.
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> Tuve una linea que durante la compilacion no me marco error, pero ya en
> tiempo de ejecucion si, y el compilador no lo detecto.
>
> cCliente := cNombre + ;
> + cApellPaterno + cApellMaterno
>
> el ejemplo es hipotetico, pero asi sucede y el compilador no marca el error.
>
> Saludos.