Delphi: Variáveis do tipo Variants

0

Posted on : 26-12-2012 | By : Paulo H Oliveira | In : Delphi

Esta flexível e poderosa Estrutura de Dados, que popularizou-se bastante através da linguagem Clipper, carrega consigo recursos extremamente interessantes para a manipulação de tipos e trabalhos com arrays. Mas o melhor de tudo, é que, estes recursos estão disponíveis a nós, “Programadores em Delphi”. Isso mesmo, vantagens como alteração/definição de tamanho em modo de execução, armazenamento de diversos tipos (inclusive de arrays).

- Declaração do Tipo Variant

O tipo Variant pode assumir tipos como varSmallInt (inteiro de 16 bits), varInteger(inteiro de 32 bits), Strings (varString e varOleStr), varSingle (ponto flutuante de precisão simples), varDouble (ponto flutuante de precisão dupla), varBoolean(lógico de 16 bits)… Bem como também assumir tipos como varNull (para nulo), e varEmpty (para nunca atribuído, vazio). As conversões de tipos acontecem automaticamente (na medida do possível), e a atribuição de tipos para uma variável do tipo Variant pode mudar em modo de execução, observe o exemplo abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var m_valor1,
m_valor2,
m_valor3 : Variant;
 
m_Str1 : String;
Begin
m_valor1 := 12;  // atribui valor inteiro
m_valor2 := 5.2; // atribui um ponto flutuante
m_valor3 := m_valor1 * m_valor2;
 
m_Str1 := m_valor3;
// atribui resultado(já convertendo)
End;

Como pode notar, temos em mãos uma flexibilidade ímpar no trabalho com variáveis. Todavia, como nem tudo são rosas, existem desvantagens com o uso de Variant, entre elas, o tamanho mínimo de 16 bits para as variáveis (tornando-as mais lentas), e também o fato de não haver verificações em modo de compilação quando usamos Variant, podendo surgir Bugs que daremos conta somente em modo de execução.

- Variant Contendo um Array

Uma outra forma de aproveitar-mos esta estrutura de dados, é através da implementação de uma variant contendo um array. Isso é possível através da função VarArrayCreate. Observe abaixo:

procedure TForm1.Button1Click(Sender: TObject);
var m_variavel : Variant;
Begin
 
// Criando um array de Variant
 
m_variavel := VarArrayCreate([1,4], varVariant);
 
// inserindo elementos no array
 
m_variavel[1] := ’palavra’;
m_variavel[2] := 213;
m_variavel[3] := true;
m_variavel[4] := 2.4;
End;

Os elementos entre colchetes que formam os pares do primeiro argumento da função representam o índice de validação do array, e quanto ao segundo argumento, o tipo dos elementos do array (neste caso usamos um tipo variant).

Assim, entendemos que a flexibilidade desta Estrutura de Dados pode ser base para a criação de diversas outras estruturas mais complexas, bastando apenas que usemos um pouco da nossa criatividade.

Bom estudo!

-(Wiliam Zacarias)-
wiliam@delphi.eti.br

Compartilhe :

  • Stumble upon
  • twitter

Escreva um comentário

Security Code: