Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Artigo Clube Delphi 94 - Streams
Artigo publicado pela Clube Delphi edição 94.

Clique aqui para ler essa revista em PDF.![]()
Expert
Streams
Implemente compactação, download em múltiplos pacotes e resources em suas aplicações com técnicas avançadas de Streams – Parte 2
Na edição anterior, iniciamos a criação de uma aplicação que faz uso intensivo de streams (Edição 93), que implementa compactação, download em múltiplos pacotes e resources. Desta vez, utilizaremos um stream temporário para escrever o arquivo que estamos lendo. Note que estamos utilizando GetDestStream e CleanDestStream para isso (vpeja última listagem da edição anterior). Portanto, poderemos estender essa classe futuramente para gerar a saída em um stream qualquer, não só
Listagem 1. Métodos GetDestStream e CleanDestStream
function TCompressor.GetDestStream(const DestFilePath:
string): TStream;
begin
Result := TFileStream.Create(DestFilePath,
fmCreate);
end;
procedure TCompressor.CleanDestStream(const
DestStream: TStream);
begin
DestStream.Free;
end;
Seu funcionamento também é básico: descartamos do arquivo Index – 1 entradas para posicionar o cursor do stream de leitura; depois lemos o tamanho do nome, o nome e o tamanho do arquivo, também para posicionar o cursor; e, finalmente, lemos o conteúdo do arquivo através de um CopyFrom do stream temporário.
Na Listagem 2 podemos ver a implementação de outro método importante, ReadEntry. Estamos apenas lendo uma entrada e descartando-a caso WriteResult seja false. Para finalizar, vejamos o método Delete descrito na Listagem 3.
Listagem 2. Método ReadEntry
procedure TCompressor.ReadEntry(WriteResult:
Boolean);
var
Buffer: TBuffer;
NameLength: Integer;
begin
FStreamRead.Read(Buffer, 4);
if WriteResult "
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Gustavo Chaurais
Gustavo Chaurais, (gchaurais@gmail.com) é Borland Delphi 7 Advanced Certified, Borland Delphi 2005 for Win32 Product Certified, Borland Delphi 2005 Instructor Certified e Borland Delphi 2006 for Win32 Product Certified. Nos últimos anos, Gustavo tem se dedicado a escrever artigos, prestar treinament...



