Serialização de Variants

Estou trabalhando em um projeto que faz uso extensivo de variáveis do tipo Variant que precisam ser armazenadas em objetos TStream. Os valores podem ser de qualquer tipo: inteiros, strings, datas e até arrays. Os streams são então levados de um lugar para outro em arquivos ou diretamente pela rede para serem lidos por outro processo.

É claro que eu não fui o primeiro a ter essa necessidade, então antes de começar a quebrar a cabeça fui buscar no Google as soluções que já tinham sido criadas. Primeiro encontrei um comentário de Deborah Pate (TeamB) no newsgroup Borland “oleautomation”. Foi um bom começo, mas ainda faltava muito.

Mais tarde encontrei os posts de Nikolay Pavlov - nem acredito que encontrei um parente de Pavlov e ainda um que programa em Delphi! Nikolay estava bem mais próximo do que eu precisava, inclusive com o tratamento recursivo de arrays.

Como o código é livre, copiei, fiz diversas alterações e melhoramentos e estou publicando aqui a minha versão para quem se interessar.

Comments

2 Responses to “Serialização de Variants”

  1. Alex on October 26th, 2008 7:09 pm

    Ola Daniel.

    Em que tipo de aplicação poderiamos utilizar essa técnica?

    Para enviar dados de uma “SELECT” num banco, por exemplo?

  2. Daniel Maltarolli on October 26th, 2008 7:36 pm

    Alex, se você quiser guardar em um campo Blob no seu banco de dados é perfeitamente viável. Acho que é mais apropriado a aplicações de baixo nível, como transferências de dados por TCP/IP ou porta serial em que um TStream seja utilizado como fonte de dados.

    As rotinas que eu fiz podem lidar com praticamente qualquer tipo de Variant. Até mesmo o conteúdo das propriedades Data e Delta de um TClientDataSet.

Deixe uma Resposta




XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">