versión 2003 (Modificado)
Esta sección describe los diferentes mensajes generados por el compilador. Estos mensajes son de diferentes tipos:
advertencias, que ayudan a evitar trampas comunes;
errores, que usted debe corregir;
mensajes de control de ejecución, generados dentro de 4D.
Advertencias
Estos mensajes se generan durante el proceso de compilación. Cada mensaje está acompañado de un ejemplo del problema y cuando es necesario, de una explicación adicional.
Uso de puntero(s) como parámetro(s) de COPY ARRAY
COPY ARRAY(Puntero->;Array)
Uso de puntero(s) como parámetro(s) de SELECTION TO ARRAY
SELECTION TO ARRAY(Puntero->;MiArray) SELECTION TO ARRAY([MiTabla]MiCampo;Puntero->)
Uso de puntero(s) como parámetro(s) de ARRAY TO SELECTION
ARRAY TO SELECTION(Puntero->;[MiTabla]MiCampo)
Uso de puntero(s) como parámetro(s) de LIST TO ARRAY
LIST TO ARRAY(Lista;Puntero->)
Uso de puntero(s) como parámetro(s) de ARRAY TO LIST
ARRAY TO LIST(Puntero->;Lista)
Uso de puntero en una declaración de array
ARRAY REAL(Puntero->;5)
El comando ARRAY REAL(Array;
Puntero->) no genera esta advertencia. El valor de la dimensión de un array no tienen ninguna influencia sobre su tipo. En este ejemplo, el array al que hace referencia el puntero debe haber sido definido en otra parte.
Uso de puntero(s) como parámetro(s) de DISTINCT VALUES
DISTINCT VALUES(Puntero->;Array)
No se recomienda utilizar la función Undefined.
If(Undefined(Variable))
La función Undefined siempre devuelve FALSE en una base compilada.
Este método está protegido por una contraseña.
Un botón con acción automática no tiene nombre en la página X del formulario MiForm.
Todos sus botones deben tener nombres para evitar conflictos.
Él puntero utilizado en este método debe referirse a un alfanumérico.
Puntero->[[2]]:="a"
Él puntero utilizado en este método debe referirse a un entero, un entero largo o un real.
Cadena[[Puntero->]]:="a"
Un índice de array debe ser un entero, un entero largo o un real.
ALERT(MiArray{Puntero->})
Falta un parámetro en la llamada al comando del plug-in.
WR SET FONT(Area)
Errores
Estos mensajes se generan durante el proceso de compilación. Le corresponde a usted corregir estos errores para que el compilador pueda generar una base compilada. Cada mensaje está acompañado de un ejemplo del problema y cuando es necesario, de una explicación adicional.
Los mensajes se clasifican por temas: Declaración, Sintaxis, Parámetros, Operadores, Comandos de plug-ins y errores generales.
Declaración
El tipo de la variable no es compatible con el operador. No es posible hacer una instrucción con estos tipos.
MiReal:=12.3 MiBoolean:=True MiReal:=MiBooleano
Cambiando la longitud máxima de una cadena de caracteres.
C_STRING(3;MiCadena) C_STRING(5;MiCadena)
Cambiando el número de dimensiones de un array.
ARRAY TEXT(MiArray;5;5) ARRAY TEXT(MiArray;5)
Conflicto de tipo sobre la variable MiArray en el formulario.
ARRAY INTEGER(MiArray)
Declarando un array sin dimensiones.
ARRAY INTEGER(MiArray)
Falta una variable
COPY ARRAY(MiArray;"")
Falta una constante.
C_STRING(Variable;MiCadena)
El tipo de la variable es desconocido. Esta variable se utiliza en el método M1.
No se puede determinar el tipo de variable. Es necesaria una directiva de compilación.
Tipo de constante incorrecto : Alfanumérico
OK:="El clima es agradable"
El método M1 es desconocido.
La línea contiene una llamada a un método que no existe o no existe más.
Incorrecto uso de un campo.
MiFecha:=Add to date(CampoBooleano;1;1;1)
La longitud de una cadena no puede ser superior a 255 caracteress.
C_STRING(325;MiCadena)
La variable Variable no es un método.
Variable(1)
La variable Variable no es un array.
Variable{5}:=12
El resultado de la función no es compatible con la expresión.
Texto:="Número"+Num(i)
El tipo de la variable no es compatible con el operador
Entero:=MiFecha*Texto
No se puede efectuar una asignación con estos tipos.
$i:="3" $($i):=5
El índice del array no es numérico.
EntArray{"3"}:=4
No se puede efectuar una asignación con estos tipos
C_TEXT(Variable) COPY ARRAY(TextoArray;Variable)
No se puede efectuar una asignación con estos tipos
Variable:=Num(Variable)
No se puede efectuar una asignación con estos tipos
Variable:=MiBooleano
Cambiando el array EntARRAY de tipo Entero a una variable de tipo Texto
ARRAY TEXT(EntArray;12)
si EntArray fue declarado en otra parte como un array de enteros.
Intentando dereferenciar una variable que no es de tipo puntero.
Variable->:=5
si Variable no es de tipo puntero.
Redeclaración de la variable Var1 de tipo texto a tipo numérico.
No se puede efectuar una asignación con estos tipos
Var1:=3.5
Incorrecto uso de un campo..
Variable:=[MiTabla]MiCampo
[MiTabla]MiCampo es un campo tipo Fecha. Variable es de tipo Numérico.
Sintaxis
Intentando dereferenciar una variable que no es de tipo puntero.
Variable:=Num("El clima es agradable")->
No es posible desreferenciar esta función.
Error de sintaxis.
If(Booleano) End for
Demasiados corchetes de apertura ({) .
La línea contiene más corchetes de apertura que de cierre.
Demasiados corchetes de cierre (})..
La línea contiene más corchetes de cierre que de apertura.
Falta un paréntesis de cierre ).
La línea contiene más paréntesis de apertura que de cierre.
Falta un paréntesis de apertura (.
La línea contiene más paréntesis de cierre que de apertura.
Falta un campo.
If(Modified(Variable))
Falta un paréntesis de cierre ).
C_INTEGER($
Falta una variable.
C_INTEGER([MiTabla]MiCampo)
Tipo de constante incorrecto : Alfanumérico
C_INTEGER(${"3"})
Falta un punto y coma (;).
COPY ARRAY(Array1 Array2)
Mac OS:
Demasiados caracteres de aperturapara los índices de la cadena.
MiCadena[[3:="a"
Demasiados caracteres de cierre para los índices de la cadena.
MiCadena3]]:="a"
Windows:
Demasiados caracteres de aperturapara los índices de la cadena.
MiCadena[[3:="a"
Demasiados caracteres de cierre para los índices de la cadena.
MiCadena 3]]:="a"
No se esperaba una subtabla.
ARRAY TO SELECTION(Array;Subtabla)
El parámetro de una clausula IF debe ser un booleano.
If(Puntero)
La expresión es muy compleja.
Divida su instrucción en varias instrucciones más cortas.
El método es muy complejo.
Demasiadas estructuras Case of...End case y/o If End if.
Campo desconocido.
Su método, probablemente copiado de otra base, contiene ??? en lugar de un nombre de campo.
Tabla desconocida.
Su método, posiblemente copiado de otra base, contiene ??? en lugar de un nombre de tabla.
Puntero a una expresión incorrecta.
Puntero:=->Variable+3
Uso incorrecto de índice de cadena.
MiReal[[3]] o MiReal [[3]]
Utilización incorrecta de la Variable VARIABLE de Tipo Texto como una variable de tipo Real
MiCadena[[Variable]] o MiCadena[[Variable]]
donde Variable no es una variable numérica.
Parámetros
El resultado de esta función no es compatible con la expresión.
MiMetodo(Num(MiCadena))
si MiMetodo espera una expresión de tipo Booleano.
Se han pasado demasiados parámetros a este método.
DEFAULT TABLE(Tabla;Form)
El resultado de esta función no es compatible con la expresión.
MiMetodo(3+2)
si MiMetodo espera una expresión Booleana.
El resultado de esta función no es compatible con la expresión.
C_INTEGER($0) $0:=False
El resultado de esta función no es compatible con la expresión.
C_INTEGER(${3}) For($i;3;5) ${$i}:=String($i) End for
Este comando no requiere ningún parámetro
SHOW TOOL BAR(MiVar)
Este comando requiere al menos un parámetro.
DEFAULT TABLE
MiCadena no puede pasarse como parámetro a este método.
MiMetodo(MiCadena)
si MiMetodo está esperando un parámetro Booleano.
El tipo del parámetro $1 es diferente en el llamado y en el método llamado.
Calcular("3+2")
con la directiva C_INTEGER($1) en Calcular.
Uno de los parámetros en COPY ARRAY es una variable.
COPY ARRAY(Variable;Array)
Redeclaración de la variable $1 de tipo Real a tipo Texto.
$1:=String($1)
Un array no puede ser un parámetro.
ReInit(MiArray)
Para pasar un array a un método, necesita para un puntero al array.
Operadores
El tipo de variable no es compatible con el operador.
Bool2:=Bool1+True
La suma no puede realizarse sobre campos Booleanos.
No se esperaba el operador >.
QUERY([MiTabla];[MiTabla]MiCampo=0;>)
No se pueden compara dos variables de estos tipos
If(Numero=Imagen2)
No se puede transformar en negativo este tipo de variable.
Boolean:=-False
Comandos de plug-ins
El comando de plug-in PExt no parece estar definido correctamente.
No se pasaron suficientes parámetros a este comando de plug-in.
Se pasaron demasiados parámetros a este comando de plug-in.
El comando Variable del plug-in no parece estar correctamente definido.
Errores generales
Dos métodos tienen el mismo nombre : Nombre.
Para compilar su base, todos los métodos de proyecto deben tener nombres diferentes.
Error interno # xx.
Si aparece este mensaje, llame al Soporte técnico de 4D e informe el número del error.
La variable Variable no pudo ser declarada. Esta variable se utiliza en el método M1.
El tipo de la variable no puede ser determinado. Es necesaria una directiva de compilación.
El método original está dañado.
El método está dañado en la estructura original. Bórrelo o reemplácelo.
Comando 4D desconocido.
El método está dañado.
Redeclaración de la variable Variable en el formulario Formulario.
Este mensaje aparece si usted da, por ejemplo, el nombre OK a una variable de tipo gráfico en un formulario.
El nombre de la función es también el nombre de una variable en el formulario.
Renombre la función o la variable.
Un método y una variable tienen el mismo nombre : Nombre.
Renombre el método o la variable.
Un comando de plug-in y una variable tienen el mismo nombre: Nombre.
Renombre el comando de plug-in comando o la variable.
Mensajes de control de ejecución
Estos mensajes son generados por 4D durante la ejecución de la base compilada y son visualizados en una ventana de error específica.
El resultado está por fuera del rango.
Si MiArray es un array de 5 elementos, este mensaje aparece si usted trata de acceder al elemento 17 en el array.
División por cero.
Var1:=0 Var2:=2 Var3:=Var2 / Var1
Acceso a un parámetro que no existe.
Utilización de la variable local $4 cuando sólo tres parámetros han sido pasados al método actual.
El puntero no está correctamente inicializado.
MiPuntero->:=5
si MiPuntero no ha sido inicializado aún.
La cadena de destino es más pequeña que la fuente.
C_STRING(MiCadena1;5) C_STRING(MiCadena2;10) MiCadena2:="Flores" MiCadena1:= MiCadena2
La referencia del carácter no es válida.
i:=-30 MiCadena[[i]]:= MiCadena2 o MiCadena[[i]]:=MiCadena2
El parámetro es una cadena vacía.
MiCadena[[1]]:= "" MiCadena[[1]]:= ""
Módulo por cero.
Var1:=0 Var2:=2 Var3:=Var2 % Var1
Parámetros incorrectos en un comando Execute Formula.
EXECUTE FORMULA("MiMetodo(MiAlfa)")
si MiMetodo espera un parámetro diferente de un alfanumérico.
Puntero a una variable desconocida.
MiPuntero:= Get pointer ("Variable") MiPuntero:= "MiCadena"
si Variable no aparece explícitamente en la base.
Intento de redireccionar utilizando un puntero.
Booleano:=Puntero->
si Puntero apunta a un campo de tipo Entero.
Mal uso de un puntero o puntero a una variable desconocida.
Caracter:=CadenaVar[[Puntero->]] Caracter:=CadenaVar[[Puntero]]
si Puntero no apunta a un número.
Ver también
Consejos de optimización , Detalles de sintaxis, Guía de declaración, Utilización de directivas de compilación.