Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

nmartins

Detectar variavel passada como Variant

Recommended Posts

Vivas, Bem pessoal , tenho uma função cujo parametro é variant. Eu consigo saber o valor da Variant mas não o seu nome . Por Exemplo se eu tivesse uma variant chamada V1 com o valor 100 , e a passase na função queria que me devolvesse V1 e não 100 ---------------------var v1 : 100 ; s1 := retorna_variant( v1 ) // deveria retornar v1-------------------- Muito Obrigado Atentamente,

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro,pelo tipo da sua pergunta, suponho q você tenha experiência com php ou alguma linguagem similar que não é obrigatória a definição de tipo (pois você usou uma Variant) e está querendo obter o nome da variável. Chutei certo ??Em Delphi as coisas são um pouco diferente (pra dizer a verdade, na maioria da linguagens compiladas). Não há uma maneira de obter o nome de uma variável em tempo de execução, pois durante a compilação o Delphi transforma todas as variáveis em endereçamento de memória, sendo assim, o máximo q você pode conseguir é seu valor ou seu endereço na RAM (no caso do tipo variant, você até consegue identificar o tipo da referência).A variável que você chama de v1, s1 etc, para o Delphi é algo parecido com $0008a:0003c. Veja que o nome que você usou é abandonado durante a compilação e foi substituido por uma referência, e por isso não pode ser recuperado.Na grande maioria das vezes (acho q 'sempre' seria a palavra ideal) você não precisa do nome da variável durante a execução de um programa. Tente revisar seu algoritmo. você pode ocasionalmente usar vetores paralelos se for o caso, ou talvez um TStrings ajudasse. Mas isso é um pouco mais complicado.Se precisar, explique melhor seu problema q eu tento esboçar um código alternativo.flw...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rodrigo, grato pela sua excelente explicação.Eu precisava mesmo disso, e passo a explicar :O meu objectivo é evitar a chamada à ShowMessage() , quando estamos a desenvolver e precisamos de testar determinada variável no código. Como às vezes temos mais que uma , pensei que o melhor seria fazer chamada a uma função que devolvesse seu valor para 1 ficheiro log que estaria sempre 'stay on top' para que seja possível ver valores das variaveis, mas pretendia que esse ficheiro tivesse a seguinte estrutura :nome da variavel(ou expressão) ---> tipo da variavel --> valor da variavelPor exemplo passava no código ; s1 := 500 ; Envia_Variavel( s1 ) ; Envia_Variavel( 1=1 ) ;e devolverias1 ---> Integer ---> 5001=1 ---> Boolean --> TrueGrato

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.