Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Файловая система , Файлы

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


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).

Практический подход к чтению бинарного файла заключается в том, что вместо прочтения по одному символу, можно объявить переменную типа PChar и считать блоки размером 200 байт.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Файлы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:02:03/0.0030498504638672/0