O compilador integrado de 4D traduz seus aplicativos de banco de dados em instruções de assembly. As vantagens do compilador são:
- Velocidade: seu banco de dados pode ser executada de 3 a 1.000 vezes mais rápida.
- Verificação do código: Seu aplicativo de banco de dados é verificado para ter a consistência no código. Ambos os conflitos de lógica e sintática são detectados.
- Proteção: Uma vez que seu banco de dados seja compilado, você pode apagar o código interpretado, então, o banco de dados compilado tem as mesmas funcionalidades que a base original, exceto que a estrutura e os métodos não podem ser visualizados ou modificados, de forma deliberada ou inadvertidamente.
- Aplicações independentes "duplo click": As bases compiladas também podem ser transformadas em aplicações independentes com o seu próprio ícone (arquivos .EXE).
- Execução em modo preemptivo: só o código compilado pode ser executado em um processo preemptivo
Para obter uma descrição do funcionamento do compilador 4D, consulte o manual de desenho.
Os comandos no âmbito deste tema dizem respeito à utilização do compilador. Eles permitem normalizar os tipos de dados em toda o seu banco de dados. O comando IDLE é utilizado especificamente em bancos de dados compilados.
#table]C_BLOBC_REALC_TEXT
C_BOOLEANC_LONGINTC_DATE
C_POINTERC_PICTUREC_TIME
C_OBJECTC_VARIANTIDLE [#/table]
Nota de compatibilidade: os comandos obsoletos _o_C_GRAPH, _o_C_INTEGER e _o_C_STRING já não devem ser utilizados.
Esses comandos, exceto o IDLE, declaram variáveis e as lançam como um tipo de dados específico. Declarar variáveis resolve as ambigüidades a respeito do tipo de uma variável de dados. Se uma variável não é declarada com um desses comandos, o compilador tenta determinar o tipo de uma variável de dados. O tipo de dados de uma variável usada em um formulário é muitas vezes difícil para o compilador determinar. Portanto, é especialmente importante que você use esses comandos para declarar uma variável usada em um formulário.
Nota: Para economizar tempo, você pode usar a opção de geração e atualização de métodos de tipagem (chamados de "métodos Compiler") encontrados na janela do compilador. Esta opção cria automaticamente métodos de tipagem que fazem um balanço e atribuem um tipo para todas as variáveis usadas no banco de dados.
Arrays são variáveis que devem seguir as mesmas regras como variáveis-padrão em relação a compilação. Os comandos de declaração de array são agrupados no tema "Arrays".
- Você não deve dar o mesmo nome para mais de um método ou variável. Você não pode ter um método com o mesmo nome de uma variável.
- Direção variável utilizada em 4D versão 1 não é permitido. Você não pode usar direção alfa, com o símbolo da seção (§), para referenciar variáveis indiretamente. Também não se pode usar direção numérica, com o chaves ({...}), para esta finalidade. As chaves só podem ser usadas ao acessar elementos específicos de um array que tenha sido declarado. No entanto, você pode usar o parâmetro indireto.
- Você não pode alterar o tipo de dados de qualquer variável ou array.
- Você não pode mudar um array unidimensional para um array bidimensional, ou alterar um array bidimensional para um array unidimensional.
- Dar o tipo "Variant" a uma variável permite manejar valores cujos tipos não são conhecidos necessariamente (como valores de atributo objetos) Por razões de performance e de simplicidade de código, é recomendado usar variáveis de um tipo fixo sempre que possível
- Embora o compilador coloque o tipo da variável para você, você deve especificar o tipo de dados de uma variável usando diretivas do compilador onde o tipo de dados é ambíguo, como em um formulário.
- Outra razão para digitar explicitamente suas variáveis é otimizar seu código. Esta regra aplica-se especialmente a qualquer variável utilizada como um contador. Use variáveis de uma tipo inteiro longo para o máximo desempenho.
- Para apagar uma variável (inicializá-lo em null), use CLEAR VARIABLE. com o nome da variável. Não utilize uma seqüência de caracteres para representar o nome da variável no comando CLEAR VARIABLE..
- A função Undefined sempre retornará False. As variáveis são sempre definidas.
- Operações numéricas em inteiro longo e variáveis inteiras são geralmente muito mais rápidas do que operações do tipo padrão numérico (real).
- Si seleccionó la propiedad "Puede ejecutarse en un proceso apropiativo" para el método, el código no debe llamar a los comandos hilo no seguros o a otros métodos hilo no seguro.
Esses princípios estão detalhados nas seções seguintes:
Abaixo estão algumas declarações de variáveis padrão para o compilador:
C_BLOB(vxMyBlob)
C_BOOLEAN(<>OnWindows)
C_DATE($vdCurDate)
C_LONGINT(vg1;vg2;vg3)
No exemplo abaixo, o método de projeto UmMetodoEntreOutros declara três parâmetros:
C_REAL($1)
C_INTEGER($2)
C_LONGINT($3)
&NBSP;
No exemplo abaixo, o método projeto Maiusculas aceita um parâmetro de tipo texto e devolve um texto:
C_TEXT($0;$1)
$0:=Uppercase(Substring($1;1;1))+Lowercase(Substring($1;2))
No exemplo a seguir, o método de projeto ENVIAR PACOTES aceita um parâmetro de tempo, seguido por um número variável de parâmetros de texto:
C_TIME($1)
C_TEXT(${2})
C_LONGINT($vlPacket)
For($vlPacket;2;Count parameters)
SEND PACKET($1;${$vlPacket})
End for
No exemplo abaixo, o método de projeto COMPILER_Param_Predeclare28 predeclara a sintaxe dos métodos de outros métodos de projeto para o compilador:
C_REAL(UmMetodoEntreOutros;$1)
C_INTEGER(UmMetodoEntreOutros;$2)
C_LONGINT(UmMetodoEntreOutros;$3)
C_STRING(Maiusculas;255;$0;$1)
C_TIME(ENVIAR PACOTES;$1)
C_TEXT(ENVIAR PAQUETES;${2})