Você está aqui: Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como usar a função BlockRead() para ler um ou mais bytes de um arquivoQuantidade de visualizações: 12299 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
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;
|
|
|
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
|
Java - Como listar todo o conteúdo de um diretório usando a função listFiles() da classe File do Java C - Como alocar memória para instâncias de uma estrutura (struct) e acessá-las usando ponteiros em C |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







