Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: DNATech :: Suporte a JSON5 em AdvPL/TLPP

_Créditos das imagens: ChatGPT_ # Suporte a JSON5 em AdvPL/TLPP [JSON5](https://json5.org/) é uma extensão do popular formato de arquivo JSON que tem como objetivo ser mais fácil de escrever e manter manualmente (por exemplo, para arquivos de configuração). Ele não foi projetado para comunicação entre máquinas. (Continue usando JSON ou outros formatos de arquivo para isso. 🙂) O JSON5 foi iniciado em 2012 e, a partir de 2022, recebe mais de 65 milhões de downloads por semana, está entre os 0,1% dos pacotes mais utilizados no npm e foi adotado por grandes projetos como Chromium, Next.js, Babel, Retool, WebStorm e outros. Também possui suporte nativo em plataformas da Apple, como macOS e iOS. Formalmente, o formato de Intercâmbio de Dados JSON5 é um superconjunto do JSON (ou seja, arquivos JSON válidos sempre serão arquivos JSON5 válidos) que expande sua sintaxe para incluir algumas produções do ECMAScript 5.1 (ES5). Além disso, ele é um subconjunto do ES5, o que significa que arqui...

Protheus :: Obtendo Array das Classes de Objetos com __ClsArr()


Se deseja obter as Classes para uso em Advpl utilize a função __ClsArr(). _Ela retornará um array multidimensional com todas as classes que poderão ser utilizadas em Advpl. No exemplo que postei sobre "Repositório Auxiliar" utilizei essa função para retornar as informações à respeito da classe "RPO".

Sua sintaxe é muito simples: __ClsArr() -> aClassArray.

Ex.:

Local aClassesArray := __ClsArray()

No Retorno de __ClsArray() obteremos um array com todas as classes, seus "membros", seus "métodos" e "parâmetros dos métodos". O único problema é que os parâmetros corresponderão ao seu tipo e não à sua descrição formal (o que dificulta, um pouco, ao leigos, saber o que passar para eles).

Usando como exemplo o array atribuido à variável aClassesArray teremos, para o elemento 4 as seguintes informações:

aClassesArray[4] //Informações da classe RPO
aClassesArray[4][1] //RPO que refere-se ao nome da classe
aClassesArray[4][2] //Esse elemento refere-se à Classe Pai
aClassesArray[4][3] //Retorna as variáveis "membros" da classe
aClassesArray[4][3][1][1] //Variável DEFINES
aClassesArray[4][3][2][1] //Variável ERRCOL
aClassesArray[4][3][3][1] //Variável ERRLINE
aClassesArray[4][3][4][1] //Variável ERRSTR
aClassesArray[4][3][5][1] //Variável INCLUDES
aClassesArray[4][3][6][1] //Variável MAINHEADER
aClassesArray[4][4] //Métodos da Classe
aClassesArray[4][4][1][1] //Método BASICOPCB
aClassesArray[4][4][1][2] //Parâmetros do Método BASICOPCB
aClassesArray[4][4][2][1] //Método CHKSUM
aClassesArray[4][4][2][2] //Parâmetros do Método CHKSUM
aClassesArray[4][4][3][1] //Método CLOSE
aClassesArray[4][4][3][2] //Parâmetros do Método CLOSE
aClassesArray[4][4][4][1] //Método COMPILE
aClassesArray[4][4][4][2] //Parâmetros do Método COMPILE
...

E assim por diante.

Percorra todos os elementos do array para obter informações de todas as classes disponíveis.



Comentários

  1. É possível obter os métodos de MsNewGetDados com essa função? Não consegui encontrar essa e nem outras funções de frame.

    ResponderExcluir
  2. Bom dia, gostaria de Deixa meu Agradecimento ao autor, pois a documentação do TDN ainda é muito mal documentada em relação a classe, um exmplo é sobre a MsNewGetDados que até hoje não tem as propriedades da classe na documentação.

    ResponderExcluir
  3. Tentei executar isso:
    Local aClassesArray := __ClsArray()

    Mas deu mensagem de erro:
    Opção não disponivel no Protheus
    Função: __CLSARRAY Called By ........ etc.

    ResponderExcluir
  4. Boa tarde.
    Gostaria de saber se alguém possui qualquer um dos fontes abaixo.
    CFGR510 e ou CFGA510.
    Quem tiver e puder me mandar ficaria muito agradecido e ate mesmo uma recompensa poderei dar.
    Mas desde já agradeço.

    ResponderExcluir
    Respostas
    1. Olá amigo, conseguiu o fonte do cfgr510 ?

      Excluir

Postar um comentário

Postagens mais visitadas