Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: 🚀 **Depurando Blocos de Código (xBase)** 🚀

🚀 **Depurando Blocos de Código (xBase)** 🚀 Interessante a abordagem de **Blocos de Código** no **Harbour**! Eles funcionam literalmente como "cidadãos de primeira classe", permitindo até mesmo depuração passo a passo. 🔍 **Exemplo Prático:** ```xBase Eval( {|aFunTst as array| LOCAL lValid AS LOGICAL LOCAL i AS NUMERIC FOR i := 1 TO Len(aFunTst) // Verifica resultado esperado lValid := aFunTst[i][3] IF lValid SetColor("g+/n") QOut("(" + aFunTst[i][2] + "): passed") SetColor("") ELSE SetColor("r+/n") QOut("(" + aFunTst[i][2] + "): failed") SetColor("") ENDIF NEXT i RETURN NIL }, aFunTst ) ``` 🤔 **Pergunta aos escovadores de bit de plantão:** É pos...

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

Comentários

Postagens mais visitadas