Postagem em destaque
- Gerar link
- X
- Outros aplicativos
BlackTDN :: Tips & Tricks ~ Driblando a mensagem ‘Improper Function Use’
Quem nunca topou com a mensagem 'Improper User Function' que atire a primeira tecla.
Eu mesmo, assim como muitos, sentimos a falta daquele recurso malandro de executar funções
diretamente pelo formulas.
Pois bem, ainda é possível..
..desde que algumas variaveis estejam a seu favor, vamos lá!
Muitos sabem.. poucos seguem a boa prática de criar funcoes USER, com no minimo 8 caracteres,
sabendo que de acordo com a propria especificação AdvPL, uma USER FUNCTION é identificada por
seus 10 primeiros caracteres, por exemplo:
A <User Function FSTstBTDN> será traduzida pelo precompilador para => <U_FSTstBTD>, onde o 'N' se perde,
por ser o 11º caractere, devido ao limite de tamanho de nome.
U | _ | F | S | T | S | T | B | T | D | N |
Sabendo deste limite para nomes de funcoes USER, exploraremos um pequeno 'bug', dos vários, na validação utilizada pela Totvs
para identificar/definir se uma função é 'improper function use' ou não.
Utilizando a conhecida AxCadastro('TABELA') 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 condicao será:
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('TABELA') 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 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.
[]’s,
OBona,
- Gerar link
- X
- Outros aplicativos
Comentários
Postagens mais visitadas
BlackTDN :: RLeg ~ Desvendando a Função ParamBox
- Gerar link
- X
- Outros aplicativos
Protheus :: Chamando Funções do Menu Diretamente e sem a Necessidade de Login
- Gerar link
- X
- Outros aplicativos
Cara, muito bom!!..Parabéns Obrigado!!
ResponderExcluirValeu!
ResponderExcluirMuito bom!
ResponderExcluirMais uma vez, fui ajudado pelos colegas!
Ednaldo Candido