quarta-feira, 2 de julho de 2014

Driblando a mensagem de erro ‘Improper Function Use'

Bom dia Galera,
Poucos seguem a boa prática de criar funções USER, com no minimo 8 caracteres,sabendo que de acordo com a especificação da linguagem AdvPL, uma USER FUNCTION é identificada por seus 10 primeiros caracteres, por exemplo:
A <User Function DDDFAT06A> será traduzida pelo pré-compilador como: <U_DDDFAT06A>, onde o 'A' se perde, por ser o 11º caractere, devido ao limite de tamanho de nome.

U
_
D
D
D
F
A
T
0
6
A

Sabendo deste limite para nomes de funções USER, existe um pequeno 'bug' na validação utilizada pela Totvs para identificar/definir se uma função é 'improper function use' ou não.
Utilizando a AxCadastro('NOMETABELA') pelo campo formulas, a seguinte mensagem será retornada:


Mas se utilizarmos um recurso, onde burlamos a validação será possível a execução!!

A solução é:
Para toda função com tamanho de 10 caracteres ou mais e que for acusada de 'improper' basta adicionar o 11º caractere, por exemplo em uma chamada a AxCadastro('NOMETABELA') seria adicionado o X, ficando a chamada como AxCadastroX('TABELA') burlando assim a validação de ‘improper functions'.


Obs.:
Isso não será valido para funções USER FUNCTIONS (Funções Customizadas) com nome menor que 10 caracteres, pois a mesma não será encontrada no RPO e será retornada mensagem informando que a função não existe no repositório.

Espero ter ajudado!

Nenhum comentário:

Postar um comentário