Главная страницаОбратная связьКарта сайта

Чтение бинарного файла


var
  f: File;
  c: Char;
begin
  AssignFile(f, "this.bin");
  Reset(f, 1);
  BlockRead(f, c, sizeof(c));
  CloseFile(f);
end;


function FindInFile(cFileName: string; cCh: char): boolean;
var
  fFile: file;
  aBuf: array[1..1024] of char;
  lFound: boolean;
  x, nRead: integer;
begin
  Assign(fFile, cFileName);
  Reset(fFile, 1);
  lFound := False;
  repeat
    BlockRead(fFile, aBuf, SizeOf(aBuf), nRead);
    x := 1;
    while not lFound and (x <= nRead) do
    begin
      lFound := (aBuf[x] = cCh)
        Inc(x)
    end;
  until
    (nRead < SizeOf(aBuf)) or lFound;
  FindInFile := lFound
end;

Взгляните на следующий код:


var
  f: file;
  c: Char;
begin
  AssignFile(f, "c:\autoexec.bat");
  Reset(f, 1);                        <- Примечание: Размер записи = 1 байту это нормально!
  while not Eof(f) do
  begin
    BlockRead(f, c, SizeOf(c));
    {Теперь обрабатываем c}
  end;
  CloseFile(f);
end;

Для ускорения этой процедуры не следует за один проход читать по одному символу. Возможно, лучшим решением будет объявление PChar скажем, размером 200, и чтением за один проход блоков размером 200 байт. {например, BlockRead(f, p, 200);} Но для этого требуется немного больше кода, чем показано здесь... (Используйте все тот же recordsize, равный 1, меняется только blocksize).


Обсудить статью на форуме


Если Вас заинтересовала или понравилась информация по разработке на Delph - "Чтение бинарного файла", Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по работе этого модуля или примера через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2024 Дискета.info