Principais diretivas em ADVPL
     As diretivas de compilação são comandos direcionados ao pré-processador do ADVPL, executados pelo compilador antes da execução do processo de compilação propriamente dito. Portanto, o pré-processador modifica o programa fonte, que ainda não estaria pronto para ser entregue ao compilador. Todas as diretivas de compilação são iniciadas pelo caractere *#* (sharp). As diretivas podem ser colocadas em qualquer parte do programa, mas não podem ser colocadas na mesma linha que outra diretiva ou instrução, ou seja uma diretiva por linha de código.
A seguir, vamos tratar de algumas diretivas mais utilizadas.


Diretiva: #DEFINE
     Pode ser utilizada para definir uma constante dentro do programa ou substituir parte do texto do código, inclusive funções, pois é feita uma troca de texto no programa antes da compilação.

#DEFINE TEXTO ‘PALAVRA’
#DEFINE NUM 25
#DFINE PI 3.1415926
#DEFINE AVISO ‘BOM DIA’
#DEFINE xtime() sleep() // xtime não existe


Exemplo de uso:

>#DEFINE MAXPASSO 16
// Programa original
User Function myfunc()
Local _nPasso := 10 // atribui 10 a variável _nPasso
_nPasso += MAXPASSO // agora _npasso contem 26
return(_nPasso)

Como o compilador verá o programa:
// programa alterado
User Function myfunc()
Local _nPasso := 10 // atribui 10 a variável _nPasso
_nPasso += 16 // agora _npasso contem 26
return(_nPasso)

Algumas abordagens não são permitidas. Por exemplo:

#DEFINE MAXPASSO 16
User Function myfunc()
Local _nPasso := 10 // atribui 10 a variável _nPasso
MAXPASSO := 25 // não vai funcionar pois o compilador vai entender 16 = 25
return(_nPasso)

Diretiva: #IFDEF

Esta diretiva indica ao compilador qual parte do código deve ser considerado no momento da compilação. É utilizada normalmente para regionalizar o software ou tratar o código para escrita com banco ADS ou DBAccess (TopConnect).
É possível definir, por exemplo, o código utilizado para bancos de dados diferentes como Oracle ou ADS.

#IFDEF TOP
// código para Oracle ou SQL Server
#ELSE
// código para ADS
#ENDIF

Ou definir o código utilizado para diferentes idiomas.

#IFDEF SPANISH
Msgyesno(‘Buenos dias!’)
#ELSE
// outra mensagem
#ENDIF

#IFDEF ENGLISH
Msgyesno(‘Good morning!’)
#ELSE
// outra mensagem
#ENDIF

Diretiva: #IFNDEF

Esta diretiva indica ao compilador qual parte do código deve ser considerado no momento da compilação caso não seja verdadeira a condicao. Tambem utilizado na regionalização do software ou tratar o codigo para escrita com banco ADS ou Dbaccess (TopConnect).

//
// Vamos supor que o programa que voce esta escrevendo seja utilizado, para o banco de dados Oracle e ADS.
//
#IFNDEF TOP
escrita para o banco ADS
#ELSE
escrita para Oracle,SqlServer
#ENDIF

Diretiva: #INCLUDE

Esta diretiva informa ao compilador para que seja incluido no fonte um arquivo externo (texto), normalmente é adicionado um arquivo com diretivas de compilação
ex: se tivermos um arquivo chamado MYINC.CH

#DEFINE PI 3.141592
#DEFINE EULER 2.71828
Programa principal Original
#INCLUDE ‘MYINC.CH’
#DEFINE EXEMPLO ‘Texto Exemplo’
User function Funcao()
Return

Programa após o pré-compilação

#DEFINE PI 3.141592
#DEFINE EULER 2.71828
#DEFINE EXEMPLO ‘Texto Exemplo’
User function Funcao()
Return

Diretiva: #Command

Esta diretiva transforma o commando já escrito no fonte para um novo commando.
#Command MsgAlert() ;
Aviso(“Atenção”,,{“Fechar”},1)

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *