versión 2003 (Modificado)
El compilador integrado de 4D traduce sus aplicaciones de bases de datos en instrucciones de nivel de ensamblador. Las ventajas del compilador son:
Velocidad: su base de datos puede se ejecuta de 3 a 1 000 veces más rápido.
Verificación del código: su aplicación de base de datos se revisa para tener consistencia en el código. Se detectan los conflictos de lógica y de sintáxis.
Protección: una vez compilada su base de datos, puede borrar el código interpretado. Entonces, la base compilada tiene las mismas funcionalidades que la base original, excepto que la estructura y los métodos no pueden ser visualizados o modificados, deliberadamente o inadvertidamente.
Aplicaciones independientes "doble-clic": las bases compiladas también pueden transformarse en aplicaciones independientes (archivos .EXE) con su propio icono.
Para una descripción del funcionamiento del compilador, consulte el Manual de Diseño.
Los comandos de este tema están relacionados con el uso del compilador. Ellos le permiten normalizar los tipos de datos a través de su base de datos. El comando IDLE se utiliza específicamente en las bases compiladas.
C_BLOB | C_INTEGER | C_REAL | IDLE |
C_BOOLEAN | C_LONGINT | C_STRING | |
C_DATE | C_PICTURE | C_TEXT | |
C_GRAPH | C_POINTER | C_TIME |
Estos comandos, excepto IDLE, declaran a las variables y les asignan un tipo de datos específico. La declaración de variables resuelve ambigüedades relacionadas con el tipo de dato de las variables. Cuando una variable no es declarada con uno de estos comandos, el compilador intenta determinar el tipo de dato de la variable. Es difícil para el compilador determinar los tipos de datos de una variable utilizada en un formulario. Por lo tanto, es particularmente importante utilizar estos comandos para declarar las variables utilizadas en formularios.
Nota: Para ahorrar tiempo, puede utilizar la opción de generación y actualización de métodos de digitación (llamada "Métodos compilador") que se encuentra en la ventana del compilador. Esta opción crea automáticamente métodos de declaración que evalúan y asignan un tipo para todas las variables utilizadas en la base.
Los Arrays son variables que deben respetar las mismas reglas que las variables estándar con respecto a la compilación. Los comandos de declaración de los arrays se agrupan en el tema "Arrays".
Reglas generales de escritura de código que será compilado
No debe dar el mismo nombre a más de un método o variable. No puede tener un método con el mismo nombre de una variable.
No se permite la indirección de variables como se utilizó en 4D versión 1. No puede utilizar indirección alfa, con el símbolo sección (§), para referenciar variables indirectamente. No puede utilizar indirección numérica, con corchetes ({...}). Los corchetes sólo pueden ser utilizados cuando se accede a elementos específicos de un Array que ha sido declarado. Sin embargo, puede utilizar indirección de parámetros.
No puede cambiar el tipo de dato de una variable o un Array.
No puede convertir un Array de una dimensión en un Array bidimensional y viceversa.
No puede modificar la longitud de una variable cadena ni de los elementos en arrays alfanuméricos.
Aunque el compilador deduce el tipo de variable por usted, cuando los tipos de datos sean ambiguos, como en un formulario, debe especificar el tipo de dato utilizando las directivas de compilación.
Otra razón para declarar explícitamente los tipos de variables es la optimización de su código. Esta regla aplica especialmente a cualquier variable utilizada como contador. Utilice variables de tipo Entero largo para asegurar un máximo desempeño.
Para borrar una variable (inicializarla en un valor nulo), utilice el comando CLEAR VARIABLE con el nombre de la variable. No utilice una cadena para representar el nombre de la variable con el comando CLEAR VARIABLE.
La función Undefined siempre devolverá False. Las variables siempre estarán definidas.
Las operaciones numéricas efectuadas en variables de tipo Entero largo y Entero son generalmente mucho más rápidas que las operaciones efectuadas en variables de tipo numérico (real).
Estos principios se detallan en las siguientes secciones:
Utilización de directivas de compilación, explica cuándo y dónde escribir directivas de compilación,
Guía de declaración, describe los diferentes tipos de conflictos que pueden ocurrir durante la compilación de bases de datos 4D,
Detalles de sintaxis, ofrece información adicional relacionada con varios comandos 4D,
Consejos de optimización, ofrece consejos para acelerar la ejecución de aplicaciones en modo compilado.
Ejemplos
1. Las siguientes son algunas declaraciones de variables estándar para el compilador:
C_BLOB(vxMiBlob) ` La variable proceso vxMBlob está declarada como una variable de tipo BLOB C_BOOLEAN(<>EnWindows) ` La variable interproceso <>EnWindows está declarada como una variable de tipo Booleano C_DATE($vdFecha) ` La variable local $vdFecha está declarada como una variable de tipo Fecha C_GRAPH(vg1;vg2;vg3) ` Las 3 variables de proceso vg1, vg2 y vg3 están declaradas como variables de tipo gráfico
2. En el siguiente ejemplo, el método de proyecto UnMetodoEntreOtros declara 3 parámetros:
` Método de proyecto UnMetodoEntreOtros ` UnMetodoEntreOtros ( Real ; Integer { ; Long } ) ` UnMetodoEntreOtros ( Amount ; Percentage { ; Ratio } ) C_REAL($1) ` 1er parámetro es de tipo Real C_INTEGER($2) ` 2do parámetro es de tipo Entero C_LONGINT($3) ` 3er parámetro es de tipo Entero largo ` ...
3. En el siguiente ejemplo, el método de proyecto Mayusculas acepta un parámetro de tipo cadena y devuelve una cadena:
` Método de proyecto Mayusculas ` Mayusculas ( Alfa) -> Alfa ` Mayusculas ( Cadena fuente ) -> Cadena en mayúsculas C_STRING(255;$0;$1) $0:=Uppercase(Substring($1;1;1))+Lowercase(Substring($1;2))
4. En el siguiente ejemplo, el método de proyecto ENVIAR PAQUETES acepta un parámetro tipo Hora seguido por una variable de parámetros de tipo Texto:
` Método de proyecto ENVIAR PAQUETES ` ENVIAR PAQUETES ( Hora; Texto { ; Texot2... ; TextoN } ) ` ENVIAR PAQUETES ( docRef ; Data { ; Data2... ; DataN } ) C_TIME ($1) C_TEXT (${2}) C_LONGINT ($vlPacket) For ($vlPacket;2;Count parameters) SEND PACKET ($1;${$vlPacket}) End for
5. En el siguiente ejemplo, el método de proyecto COMPILER_Param_Predeclare28 predeclara la sintaxis de otros métodos de proyecto para el compilador:
` Método de proyecto COMPILER_Param_Predeclare28 C_REAL(UnMetodoEntreOtros;$1) ` UnMetodoEntreOtros ( Real ; Integer { ; Long } ) C_INTEGER(UnMetodoEntreOtros;$2) ` ... C_LONGINT(UnMetodoEntreOtros;$3) ` ... C_STRING(Mayusculas ;255;$0;$1) ` Mayusculas ( Alfa ) -> Alfa C_TIME(ENVIAR PAQUETES;$1) ` ENVIAR PAQUETES ( Hora; Texto { ; Texot2... ; TextoN } )C_TEXT(ENVIAR PAQUETES;${2}) ` ...
Ver también
C_BLOB, C_BOOLEAN, C_DATE, C_GRAPH, C_INTEGER, C_LONGINT, C_PICTURE, C_POINTER, C_REAL, C_STRING, C_TEXT, C_TIME, IDLE.