BlackTDN Search

sábado, 26 de maio de 2012

BlackTDN :: ADVPL ~ Class TFTPClient : Combo IV (O Destrinchar Parte 2)

pergaminhos… Continuação: BlackTDN :: ADVPL ~ Class TFTPClient : Combo III (O Destrinchar Parte 1).

Diretiva #xTranslateUma mera formalidade, uma vez que poderia ter criado uma User Function. Ou uma Function U_<f>.

User Function f() é traduzida, pelo pré-processador, para  u_f(). Lembrando que uma função retorna valor e uma procedure não (demonstrado como compatibilidade histórica) na realidade, no Protheus não existe a distinção entre Função e Procedure (1).

 

Observemos o conteúdo do arquivo de cabeçalho “protheus.ch”

Detalhe #xtranslate : Protheus.ch Algumas diretivas de tradução para o pré-processador encontradas no arquivo de cabeçalho “protheus.ch”. Dentre elas:

#xtranslate USER Function <cNome> => Function U_<cNome>

Para corroborar a afirmativa em (1) observe o seguinte fragmento de código:

Protheus : IDE : Erro de Compilação

O espaço de nomes é o mesmo: Seja uma Function ou uma Procedure. Se tentarmos compilar o código ocorrerá a seguinte exceção:

Compilando arquivos...
   c:\temp\xprocname.prw...
   (no projeto FTPSample)
Erro de compilação:  XPROCNAME.PRW(5)   C2021 Redefinition of function U_XPROCNAME


Processo interrompido por erro FATAL de compilação.

Compilação finalizada - 1 arquivo(s) - 1 mensagem(s)

Tempo de duração da compilação: 3 segundos




Ao ajustarmos o código. Deixando cada uma com o seu devido nome e executarmos:

Protheus : IDE : Procedure e Function

Teremos os seguintes resultados:

User Function fProcName() User Procedure pProcName()
u_fProcName() u_pProcName()
U_FPROCNAME U_PPROCNAME




   1: #include "protheus.ch"
   2: #xtranslate USER PROCEDURE <p> => PROCEDURE U_<p>
   3: User Function fProcName()
   4: Return(ProcName())
   5: User Procedure pProcName()
   6: Return(ProcName())









… continua

[]s
иαldσ dj

Nenhum comentário:

Postar um comentário