sexta-feira, julho 14, 2006

Acesso a Arquivos com várias estruturas

Windows FileMapping (WinAPI)










Já tentou acessar um arquivo através de pedaços com BlockRead, BlockWrite? Funciona bem com registros para arquivos estruturados. E para arquivos que podem assumir diversas estruturas (por exemplo, você quer ler um byte na posição 3000 e um registro na posição 2999, um objeto na posição 300, um inteiro na posição 900, um byte negativo na posição 10000... e tudo sem precisar declarar variáveis para intermediar essa leitura nem dar conta do buffer desse arquivo)?


Criar arquivos complexos não é dificil. É só querer armazenar mais de uma coisa num lugar só e é muito comum quando se tem um formato de arquivo que junte elementos diferentes. Para arquivos que têm só texto, um cabeçalho (header) que descreva o tamanho da letra (fonte), a cor ou outros detalhes um acesso estruturado serviria. E para arquivos que juntam texto, som, imagens e estruturas diversas, criadas por você?

Generalizar o acesso ao arquivo tratando-o como uma sequencia de bytes (usando o tipo file of byte) não dá acesso indexado maleável porque não evita o uso de buffers para transferir do o que você quer do arquivo para a memória.

E se você quisesse o arquivo na memória de maneira imediata sem se preocupar com o acesso e com leituras para variáveis?

Use o FileMapping. O Windows cuida de tudo. E você ganha um ponteiro que pode ser usado com o tipo que você quiser, fazendo o arquivo representar aquilo que você quiser sem precisar usar variáveis intermediárias. Depois, faça typecast dos tipos. Para arquivos feitos por você vale a pena descrever tipos que facilitem o acesso a esses arquivos criando registros que representem esse arquivo dependendo do tipo de informação que se quer acessar.

0 Comentários:

Postar um comentário

<< Home

Pesquisa no Blog:
Web DelphiEArte.blogspot.com