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.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
compilacion
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
compilacion
Ramón:
++ es un operador valido de Harbour
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> Solo me referi a la sintaxis que debia haber marcado error al ser compilada,
> el valor de las variables es normal, ya que no se puede hacer esto:
>
> x := y + + z
>
> mas el compilador de harbour no lo marca como error, y pues , obvio en
> ejecucion ya lo detecta, pero, por que elimina todo lo que encuentra apartie
> del seguno simpbolo +.
>
> Saludos.
>
++ es un operador valido de Harbour
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> Solo me referi a la sintaxis que debia haber marcado error al ser compilada,
> el valor de las variables es normal, ya que no se puede hacer esto:
>
> x := y + + z
>
> mas el compilador de harbour no lo marca como error, y pues , obvio en
> ejecucion ya lo detecta, pero, por que elimina todo lo que encuentra apartie
> del seguno simpbolo +.
>
> Saludos.
>
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
compilacion
Solo me referi a la sintaxis que debia haber marcado error al ser compilada,
el valor de las variables es normal, ya que no se puede hacer esto:
x := y + + z
mas el compilador de harbour no lo marca como error, y pues , obvio en
ejecucion ya lo detecta, pero, por que elimina todo lo que encuentra apartie
del seguno simpbolo +.
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
el valor de las variables es normal, ya que no se puede hacer esto:
x := y + + z
mas el compilador de harbour no lo marca como error, y pues , obvio en
ejecucion ya lo detecta, pero, por que elimina todo lo que encuentra apartie
del seguno simpbolo +.
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
compilacion
Ramón,
> 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
>
¿No te apareció ningún 'warning'? Algo así:
tCargaRapi.prg(26) Warning W0001 Ambiguous reference: 'B'
tCargaRapi.prg(26) Warning W0001 Ambiguous reference: 'A'
Normalmente, si aparecen esos avisos es por que alguna variable no la has
declarado previamente y muy probablemente no esté inicializada. Estos avisos
no aparecen con datas de clases.
Saludos,
José Luis Capel
> 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
>
¿No te apareció ningún 'warning'? Algo así:
tCargaRapi.prg(26) Warning W0001 Ambiguous reference: 'B'
tCargaRapi.prg(26) Warning W0001 Ambiguous reference: 'A'
Normalmente, si aparecen esos avisos es por que alguna variable no la has
declarado previamente y muy probablemente no esté inicializada. Estos avisos
no aparecen con datas de clases.
Saludos,
José Luis Capel
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
compilacion
i++ es un incremento
i + + al tener un espacio no debe ser operador
x = 7 + ;
+ 5 //es un error de sintaxis.
Pero aun asi los deja pasar, no generan mas que un error de ejecucion, pero,
debe detectarlos el compilador de sintaxis o de lexico.
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
i + + al tener un espacio no debe ser operador
x = 7 + ;
+ 5 //es un error de sintaxis.
Pero aun asi los deja pasar, no generan mas que un error de ejecucion, pero,
debe detectarlos el compilador de sintaxis o de lexico.
Saludos.
--
Ramón Zea
ramonzea@yahoo.com
http://www.paginasprodigy.com/zeasoft/
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
compilacion
> Normalmente, si aparecen esos avisos es por que alguna variable no la has
> declarado previamente y muy probablemente no esté inicializada. Estos avisos
> no aparecen con datas de clases.
>
>
> Saludos,
> José Luis Capel
>
Esa puede ser la razon, ya que si lees el ejemplo lo invente para mostrarlo, pero, si estoy usando datas.
Gracias.
Ramón Zea
--
> declarado previamente y muy probablemente no esté inicializada. Estos avisos
> no aparecen con datas de clases.
>
>
> Saludos,
> José Luis Capel
>
Esa puede ser la razon, ya que si lees el ejemplo lo invente para mostrarlo, pero, si estoy usando datas.
Gracias.
Ramón Zea
--
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
-
- Mensajes: 620
- Registrado: Jue Mar 23, 2006 2:39 am
compilacion
Ramón:
Puedes hacer ++i o i++, preincremento y postincremnto
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> i++ es un incremento
>
> i + + al tener un espacio no debe ser operador
>
> x = 7 + ;
> + 5 //es un error de sintaxis.
>
> Pero aun asi los deja pasar, no generan mas que un error de ejecucion, pero,
> debe detectarlos el compilador de sintaxis o de lexico.
>
> Saludos.
Puedes hacer ++i o i++, preincremento y postincremnto
Saludos
Rene Flores
http://www.ciber-tec.com
Zea escribió:
> i++ es un incremento
>
> i + + al tener un espacio no debe ser operador
>
> x = 7 + ;
> + 5 //es un error de sintaxis.
>
> Pero aun asi los deja pasar, no generan mas que un error de ejecucion, pero,
> debe detectarlos el compilador de sintaxis o de lexico.
>
> Saludos.