O que é um fluxo? TStream?
Um fluxo é o que o nome sugere: um "rio de dados" que flui. Um fluxo tem um começo, um fim e você está sempre em algum lugar entre esses dois pontos.
Usando Delphi's Objetos do TStream dos quais você pode ler ou gravar em vários tipos de mídia de armazenamento, como arquivos de disco, memória dinâmica etc.
Quais dados um fluxo pode conter?
Um fluxo pode conter o que você quiser, na ordem que desejar. No projeto de exemplo que acompanha este artigo, os registros de tamanho fixo são usados para fins de simplicidade, mas você pode gravar qualquer combinação de dados de tamanho variável em um fluxo. Lembre-se, no entanto, de que você é responsável pela família. Não há como o Delphi "lembrar" que tipo de dados há em um fluxo ou em que ordem!
Streams versus matrizes
As matrizes têm a desvantagem de ter um tamanho fixo que deve ser conhecido em tempo de compilação. Ok, você pode usar matrizes dinâmicas.
Um fluxo, por outro lado, pode crescer até o tamanho da memória disponível, que é consideravelmente grande nos sistemas atuais, sem tarefas domésticas.
Um fluxo não pode ser indexado, como um array. Mas como você verá abaixo, "caminhar" para cima e para baixo em um fluxo é muito fácil.
Os fluxos podem ser salvos / carregados de / para arquivos em uma operação simples.
Sabores dos córregos
TStream é o tipo de classe base (abstrato) para objetos de fluxo. Ser abstrato significa que o TStream nunca deve ser usado como tal, mas apenas nas formas descendentes. Para transmitir qualquer tipo de informação, escolha uma classe descendente de acordo com as necessidades específicas de dados e armazenamento. Por exemplo:
- TFileStream (para trabalhar com arquivos)
- TMemoryStream (para trabalhar com um buffer de memória)
- TStringStream (para manipular seqüências de caracteres na memória)
- TBlobStream (para trabalhar com campos BLOB)
- TWinSocketStream (para leitura e gravação em uma conexão de soquete)
- TOleStream (para usar uma interface COM para ler e gravar)
Como você verá, TmemoryStream e TFileStream são notavelmente intercambiáveis e compatíveis.
Faça o download do projeto de amostra!