Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP

_Créditos das imagens: ChatGPT_ ### LeetCode :: **Resolvendo o Desafio "Palindrome Number" do LeetCode com XBase e TLPP** No mundo da programação, os desafios do LeetCode são uma excelente maneira de aprimorar nossas habilidades de codificação. Um desses é o desafio [**Palindrome Number** (Número Palíndromo)](https://leetcode.com/problems/palindrome-number/description/). Neste artigo, vamos explorar como resolvemos esse desafio utilizando XBase e TLPP (linguagens que possuem um poderoso conjunto de ferramentas para o desenvolvimento de soluções rápidas e eficientes). #### Descrição do Desafio O problema **Palindrome Number** exige que verifiquemos se um número inteiro é um palíndromo. Ou seja, o número deve ser lido da mesma forma de trás para frente como é lido da frente para trás. Exemplos de números palíndromos incluem: 121, 12321, etc. Já números como 123, 10, e -121 não são palíndromos, pois sua leitura invertida não é igual ao número original. A ideia é criar uma f...

BlackTDN :: Tips & Tricks ~ Driblando a mensagem ‘Improper Function Use’

 

drible_improperQuem 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,

IMPROPER

 

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,

Comentários

Postar um comentário

Postagens mais visitadas