Estou desenvolvendo alguns fontes em TLPP com o recurso de NameSpace, e para ajudar a simplificar o desenvolvimento preciso recuperar o NameSpace desse fonte que estou atuando, como faço para recuperar essa informação ? pode ser durante a compilação através de alguma diretiva ou em tempo de execução. Isso ajudaria demais a padronizar os desenvolvimentos, alguém sabe se isso é possível ?
Boa tarde, Cirilo!
Pelo VScode com o TDS instalado você pode clicar com o botão direito no servidor e ir em Functions Inspector (Inspetor de Funções). Você consegue ver todos os objetos customizados filtrando pelo RPO custom.
Sugiro exportar para melhor visualização.
Eu preciso da informação para usar dentro do meu fonte, alguma forma de ter esse dado e usar dentro das funções.
Olá,
Hoje não existe esse recurso específico.
Você consegue algo próximo ao namespace, verificando sua stack, utilizando a função ProcName, ela vai retornar pra você a função atual por extenso, contendo inclusive o namespace, com isso, você vai procurar por exemplo, o último . dessa string, por exemplo, com a função Rat e fazer um SubStr, removendo o nome da função e assim chegando ao namespace atual, porém isso você consegue apenas em runtime.
Durante a implmentação do MVC para TLPP, foi feitos tratamentos exatamente dessa forma, procurando se a função possuia pontos, pois somente TLPP tem essa feature, contendo ponto, eu sabia que era TLPP e encontrava o namespace dessa forma, verificando a stack, removendo o nome da função e assim chengando ao namespace.
Exemplo:
cFuncao := ProcName(0)
nPosicaoPonto := Rat(".", cFuncao)
if nPosicaoPonto > 0
cNameSpace := SubStr(cFuncao, 1, nPosicaoPonto -1)
else
//Fonte não tem namespace, podendo ser um ADVPL ou um TLPP sem namespace mesmo
cNameSpace := ""
endif
Documentação: ProcName - TOTVSTEC - TDN