Variant no 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.
Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009