4D v16.3

Comandos de Compilação

Página Inicial

 
4D v16.3
Comandos de Compilação

Comandos de Compilação  


 

 

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.

C_BLOB_o_C_INTEGERC_REAL
C_BOOLEANC_LONGINT_o_C_STRING
C_DATEC_PICTUREC_TEXT
_o_C_GRAPHC_POINTERC_TIME
C_OBJECTIDLE

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.
  • Você não pode mudar o comprimento da string ou variáveis de elementos em arrays de string.
  • 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// a variável processo vxMBlob está declarada como uma variável de tipo BLOB
 C_BOOLEAN(<>OnWindows// a variável interprocesso <>OnWindows está declarada como uma variável de tipo Booleano
 C_DATE($vdCurDate// a variável local $vdCurDate está declarada como uma variável de tipo Data
 C_LONGINT(vg1;vg2;vg3// as 3 variaveis de proceso vg1, vg2 y vg3 estão declaradas como variáveis de tipo inteiro longo

No exemplo abaixo, o método de projeto UmMetodoEntreOutros declara três parâmetros:

  ` Método de projeto UmMetodoEntreOutros
  ` UmMetodoEntreOutros( Real ; Integer { ; Long } )
  ` UmMetodoEntreOutros ( Amount ; Percentage { ; Ratio } )
 C_REAL($1)
  ` 1er parâmetro é de tipo Real
 C_INTEGER($2)
  ` 2do parâmetro é de tipo Inteiro
 C_LONGINT($3)
  ` 3er parâmetro é tipo Inteiro longo
 &NBSP` ...

No exemplo abaixo, o método projeto Maiusculas aceita um parâmetro de tipo texto e devolve um texto:

  // Método projeto Maiusculas
  // Maiusculas ( Texto) -> Texto
  // Maiusculas ( String fonte ) -> String em maiúsculas
 
 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:

  ` Método de projeto ENVIAR PACOTES
  ` ENVIAR PACOTES ( Hora; Texto { ; Texot2... ; TextoN } )
  ` ENVIAR PACOTES ( docRef ; Data { ; Data2... ; DataN } )
 
 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:

  ` Método de projeto COMPILER_Param_Predeclare28
 
 C_REAL(UmMetodoEntreOutros;$1` UmMetodoEntreOutros ( Real ; Integer { ; Long } )
 C_INTEGER(UmMetodoEntreOutros;$2` ...
 C_LONGINT(UmMetodoEntreOutros;$3` ...
 C_STRING(Maiusculas;255;$0;$1` Maiusculas ( Alfa ) -> Alfa
 C_TIME(ENVIAR PACOTES;$1` ENVIAR PACOTES ( Hora; Texto { ; Texot2... ; TextoN })
 C_TEXT(ENVIAR PAQUETES;${2}) ` ...



Ver também 

_o_C_GRAPH
_o_C_INTEGER
_o_C_STRING
C_BLOB
C_BOOLEAN
C_DATE
C_LONGINT
C_PICTURE
C_POINTER
C_REAL
C_TEXT
C_TIME
IDLE

 
PROPRIEDADES 

Produto: 4D
Tema: Compilador

 
HISTÓRIA 

Modificado: 4D v15 R5

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)