Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP

_Créditos das imagens: ChatGPT_ # LeetCode (17) :: Comparando Implementações do Desafio "Letter Combinations of a Phone Number" em Harbour e TOTVS TLPP O desafio [**"Letter Combinations of a Phone Number"**](https://leetcode.com/problems/letter-combinations-of-a-phone-number/description/) (Combinações de Letras de um Número de Telefone) é um problema clássico de programação que envolve a geração de todas as combinações possíveis de letras que um número de telefone pode representar, com base no mapeamento tradicional dos teclados de telefone. Abaixo, comparamos duas implementações desse desafio: uma em **Harbour** e outra em **TOTVS TLPP** (TOTVS Language Plus Plus). ## O Desafio Dada uma string contendo dígitos de 2 a 9, retorne todas as combinações possíveis de letras que esses dígitos podem representar. O mapeamento dos dígitos para as letras é o mesmo dos teclados de telefone tradicionais: - 2: "abc" - 3: "def" - 4: "ghi" - 5: ...

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