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: 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; |
![]() |
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 |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |