Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios

Como usar a função BlockRead() para ler um ou mais bytes de um arquivo

Quantidade de visualizações: 12172 vezes
A função BlockRead() pode ser usada quando precisamos ler um ou mais bytes em um arquivo não tipado, ou seja, um arquivo de tipo arbitrário não texto. Veja sua assinatura:

a) procedure BlockRead(var F: File; var Buf; Count: Integer); overload;

b) procedure BlockRead(var F: File; var Buf; Count: Integer; var AmtTransferred: Integer); overload;

Aqui F é um arquivo não tipado a partir do qual os dados serão lidos, Buf é qualquer variável na qual os dados lidos serão armazenados, Count é uma expressão do tipo Integer e representa a quantidade de registros a serem lidos e AmtTransferred é uma variável opcional do tipo Integer que representa a quantidade de registros realmente lidos.

Vamos ver um exemplo? Eis um trecho de código no qual lemos um byte de um arquivo chamado dados.dat:

procedure TForm3.Button3Click(Sender: TObject);
var
  arquivo: File;
  valor: Byte;
begin
  // vamos abrir o arquivo para leitura
  AssignFile(arquivo, 'dados.dat');
  Reset(arquivo, 1);  // tamanho do registro = 1 byte

  // vamos ler um byte e guardá-lo na variável valor
  BlockRead(arquivo, valor, 1);

  // vamos exibir o valor do byte lido
  ShowMessage(IntToStr(valor));

  // vamos fechar o arquivo
  CloseFile(arquivo);
end;

Veja que usamos a função Reset() para abrir o arquivo para leitura e também para definir que cada registro lido terá o tamanho de 1 byte. Veja agora como podemos ler um inteiro Integer, ou seja, um grupo de 4 bytes:

procedure TForm3.Button3Click(Sender: TObject);
var
  arquivo: File;
  valor: Integer; // equivale a 4 bytes
begin
  // vamos abrir o arquivo para leitura
  AssignFile(arquivo, 'dados.dat');
  Reset(arquivo, 4);  // tamanho do registro = 4 bytes

  // vamos ler um Integer e guardá-lo na variável valor
  BlockRead(arquivo, valor, 1);

  // vamos exibir o valor do Integer lido
  ShowMessage(IntToStr(valor));

  // vamos fechar o arquivo
  CloseFile(arquivo);
end;

Aqui nós definimos que cada registro lido terá o tamanho de 4 bytes. Para finalizar, veja como podemos ler um grupo de 4 bytes de cada vez e guardá-los em uma matriz de Byte:

procedure TForm3.Button3Click(Sender: TObject);
var
  arquivo: File;
  valores: array[0..3] of Byte; // uma matriz de 4 bytes
  i: integer;
begin
  // vamos abrir o arquivo para leitura
  AssignFile(arquivo, 'dados.dat');
  Reset(arquivo, 1);  // tamanho do registro = 1 byte

  // vamos ler o grupo de 4 bytes e guardá-lo na matriz valores
  BlockRead(arquivo, valores, sizeof(valores));

  // vamos mostrar os valores lidos
  for i := 0 to 3 do
    begin
      ShowMessage(IntToStr(valores[i]));
    end;

  // vamos fechar o arquivo
  CloseFile(arquivo);
end;


Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de Delphi

Veja mais Dicas e truques de Delphi

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 40 usuários muito felizes estudando em nosso site.