Identificar tipo de dado de uma propriedade

Boa tarde!

Gostaria de saber como identificar o tipo do dado de uma propriedade de uma classe. Tentei utilizar as funções Type e ValType mas ambas retornaram 'U'.

Exemplo:


If(ValType(::xValue) == 'N')

   // faz algo

EndIf

Alguém saberia dizer como posso identificar?

Obrigado pela ajuda desde já.

Boa tarde Giordano, você quer literalmente saber o tipo? Como a propriedade foi tipada na declaração da classe? Ou apenas o conteúdo presente na propriedade?

Boa tarde, Daniel! A propriedade não foi tipada. A mesma pode possuir vários tipos, pois é uma classe que efetua a leitura de um arquivo. O usuário pode digitar caractere ou númerico.

Boa tarde, eu acredito que você está usando a função certa VALTYPE() você chegou a validar no debug se no momento que passa pela validação está com o dado?

A função ValType então deveria funcionar… Consegue colocar mais trechos do código?

Ola Giordano!

Veja esse artigo que poderá te ajudar.

Além disso, algumas funções não funcionam corretamente usando a notação :: , por isso prefiro utilizar sempre a notação self:propriedade .

Marcos, boa tarde. O :: só existe no código fonte, na pré-compilação isso vira self, então acaba não tendo qualquer impacto, faça o teste, utilize :: para utilizar de uma propriedade ou método e gere o PPO de seu fonte.

Como se gera esse PPO do fonte Daniel?

No antigo TDS (Eclipse) você tinha uma opção (preferências) que ao compilar um fonte gerava o PPO, no VSCode TDS eu sinceramente não sei… Eu utilizo a extensão também da TOTVS, mas a primeira versão, a do Rodrigo Antônio que fez por iniciativa própria, nessa versão você compila utilizando de shift+ctrl+f9, isso gera o PPO.

Entendi :confused: Uma pena. Não configurei a versão do Rodrigo ainda.

Boa tarde!

Quando eu exibia a propriedade ::aData no Debug Console do VSCode era exibido o conteúdo normalmente, ao informar ValType(::aData) retornava Nil, então digitei ValType(Self:aData) e retornou 'A' corretamente.

Acredito que tenha sido só um equivoco na hora de usar o Debug Console mesmo... de qualquer maneira, obrigado a todos pela ajuda.

Boa noite, na verdade então o erro era no debug. Entendi, sim, o debug normalmente não aceita os mesmos atalhos que a linguagem, pois ele não tem pré-compilação.

Bom, talvez o que tenha acontecido comigo tenha sido um erro do VSCode tambem no momento do Debug por isso mencionei isso na minha resposta. No meu caso, estava utilizando GetHeaders(::propriedade) e ele nao conseguia retornar o valor, quando utilizei o self, funcionou corretamente.