Trabalhando com Streams e Threads no Delphi

Este artigo aborda a utilização de Streams, sequências de bytes criados na memória que podem ser empregados para ler, gravar e copiar informações, oferecendo recursos adicionais para a manipulação dos dados.

De que se trata o artigo

Este artigo aborda a utilização de Streams, sequências de bytes criados na memória que podem ser empregados para ler, gravar e copiar informações, oferecendo recursos adicionais para a manipulação dos dados, apresentando também uma forma de empregá-los na elaboração de uma simples ferramenta de gerenciamento de Downloads em segmentos, baseada em Threads, que permitem a execução de tarefas em paralelo.

Em que situação o tema é útil

Manipular informações em nível de bytes, podendo copiar arquivos ou dados de uma forma direta ou mais elaborada, podendo ainda “recortar” tais dados e empregar o conceito de concorrência nos projetos através da utilização de Threads.

Streams

A informação é um dos pilares no ambiente computacional. Todos os dias, mais e mais dados são lidos, copiados e compartilhados entre os usuários. Ter à disposição um mecanismo capaz de oferecer diversos recursos para a manipulação das mais variadas informações, torna-se algo essencial em grande parte das aplicações, e uma tecnologia que pode ser empregada para este fim é o Stream. Ele pode ser resumido como uma sequência de bytes presente na memória, que oferece ao desenvolvedor a possibilidade de copiar, ler e gravar as informações, enviando-as para um destino desejado, que pode ser outro Stream ou um meio físico de armazenamento, como o HD. Sendo assim, a aplicação pode “quebrar” arquivos binários e posteriormente, reuni-los novamente, como é o caso de um Software gerenciador de Downloads. O Delphi conta com uma variedade de classes que podem ser empregadas para as mais diversas tarefas empregando Streams, que por sua vez possuem muitos métodos importantes. Neste artigo, serão apresentadas as classes básicas para a utilização deste recurso, empregando técnicas para dividir um arquivo qualquer em três partes sem corrompê-lo e assim efetuar o Download do mesmo paralelamente, recorrendo também ao uso de Threads.

A informação é um fator extremamente importante para todos em qualquer contexto, seja na informática, nos relacionamentos, estudo, trabalho, etc. No ambiente computacional e, mais especificamente, dentro do desenvolvimento de Software existem vários meios para a manipulação das informações, que podem ser simples através de uma rápida e objetiva função, ou mais complexas, onde demandam maiores recursos. Outro fator importante é com relação à troca das informações entre as entidades envolvidas, como é o caso das redes e em especial, a Internet, onde mecanismos devem ser implementados para que todo o processo ocorra de forma satisfatória. A comunicação no ambiente computacional tem como um de seus pilares os protocolos, onde o TCP (Transfer Control Protocol) merece ser evidenciado, uma vez que fornece a garantia de que as informações serão devidamente entregues ao seu destinatário, porém, além deste, uma variedade de tecnologias podem ser empregadas quando surge a necessidade de executar uma tarefa mais específica, como é o caso da transferência de um arquivo binário por exemplo. Um recurso que pode ser adotado para a manipulação e transferência de informações de uma forma mais ampla é o Stream. Este pode ser resumido como um fluxo de dados presente na memória, que tem um início e um fim, sendo constituído por uma sequência de bytes, permitindo que a aplicação possa percorrer tais dados obtendo informações como tamanho, por exemplo, tendo um funcionamento semelhante ao processo de navegação pelos registros de um DataSet. Além disso, os Streams podem ser utilizados para manipular uma diversidade de tipos de dados, como imagens, áudio, binários, textos e assim por diante, bem como ter seu tamanho estendido até os limites disponíveis e permitidos pela memória física.

No cenário de Streams é muito comum ouvir o termo Streaming. Como é uma palavra inglesa no gerúndio, indica que é uma ação que está ocorrendo, ou em outras palavras, o momento em que um determinado Stream está sendo utilizado para a transferência das informações, podendo ser definido então como um fluxo constante de dados. Este processo é muito empregado na Internet principalmente em áudio e vídeo, uma vez que tal recurso permite que determinado arquivo possa ter sua reprodução iniciada sem que o mesmo tenha que ser obtido completamente, o que poderia levar um tempo considerável se o arquivo em questão for grande. Contudo, dentro deste contexto de Streaming para redes como a Internet, existem outros conceitos e técnicas que são empregados, tais como protocolos específicos, otimização de transmissão, entre outros.

Outro recurso que é comum de ser adotado quando Streams são empregados é o Buffer. Ele por sua vez, também está contido em uma área da memória, podendo ser utilizado para a leitura e gravação dos dados, porém ele tem a função de armazenar determinada informação temporariamente, informação esta que foi produzida, mas que ainda não foi consumida. Sendo assim, a utilização de Buffers também é muito útil quando a velocidade da transferência de dados entre as entidades envolvidas é diferente ou podem ocorrer momentos de pausa na troca, como é o caso de aplicações de multimídia rodando sobre a Internet."

[...] continue lendo...

Artigos relacionados