Um pouco sobre o TValue

Desde os primórdios do Delphi, existe um tipo de dados conhecido como “Variant” que é utilizado para armazenar uma grande variedade de tipos (char, string, integer, date, ponteiro, etc, etc, etc) e foi sempre utilizado para armazenar esses valores em situações onde o tipo do conteúdo poderia variar.

Com o Delphi 2010, e as novas alterações da RTTI, foi introduzido um novo tipo de dados, o TValue, que trabalha semelhante ao tipo variant, embora tenha algumas características diferentes. Uma delas é que, diferente do tipo variant, não é possível alterar o tipo de dados do TValue depois que ele foi informado pela primeira vez, ou seja, se ele foi definido como inteiro, será inteiro até o final. O objetivo do tipo não é sofrer alterações dos tipos dos valores, mas simplesmente receber um valor qualquer e armazenar esse valor até o momento de ser utilizado novamente.

Segue a declaração do TValue (Documentação oficial: http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Rtti.TValue):

Veja que ele  possui uma forma de checar os valores como difetentes tipos de dados, inclusive como interfaces.

Embora ele não possa se tornar um outro tipo de dado depois de definido na primeira utilização, ele é capaz de realizar casts com o seu conteúdo:

É isso. Lembre-se que ele veio junto com as novas funcionalidades da RTTI, por isso, pode ser muito mais explorado ainda. Experimente!

4 respostas para “Um pouco sobre o TValue”

    1. Você tem razão, ele está bem resumidinho mesmo, e esse assunto poderia ter sido bem mais explorado. Acredito que eu estava com pouco tempo quando o fiz. De qualquer forma, serve para dar um toque nas possibilidades para a utilização desse novo tipo.

      Obrigado pelo comentário, e muito sucesso em seus projetos.

    1. É uma forma de pensar. Penso que pode ser melhor utilizado na engenharia de software, disponibilizando um tipo flexível para passagem de parâmetros e coisas do gênero. Veja, você tem um tipo de todos os tipos, que pode armazenar seu tipo base. Pela forte tipagem do Delphi, isso flui como uma opção de design.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *