Работа с бинарными файлами в Delphi

Система и файлы   3 Январь 2012  Автор статьи:  

Для начала работы с файлом, как с бинарным, вам потребуется открыть его как массив некоторых структур или базовых типов.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Var name:file of integer;
//вместо integer вы можете указать любой тип данных
Assignfile(name,in.dat);
// связывание файла in.dat с переменной name
//Если вы собираетесь писать в бинарный файл.
Rewrite(name);// файл открыт для перезаписи
Write(name,9);
//запишем в наш бинарный файл целое число 9
//Для продолжение записи достаточно просто дальше писать функцию write(name,a);
//Где а-это переменная типа integer или того же типа что и переменная name в общем случае.
Reset(name);// открываем файл для чтения
Read(name,a);
// читаем из бинарного файла name переменную а, требования к а такие же что и выше.
Seek(name,b);
//сдвиг на b позиций относительно начала файла.

В сухом остатке мы имеет значительно урезанные процедуры работы с бинарным файлом, что может значительно затруднить считывание и перемещение по файлу по сравнению с C/C++. Единственным положительным моментом является возможность считывать структуры, что оставляет за собой некоторую гибкость, но мешает в какой-то степени создать универсальный контейнер. И под конец  я хотел бы рассмотреть пару примеров.

1) Просто запишем и прочитаем из бинарного файла

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var
f:file of integer;
x,i:integer;
begin
assignfile(f,'in.dat');
rewrite(f);
for I:=1 to 10 do
write(f,i);
close(f);
reset(f);
for i:=1 to 10 do
begin
read(f,x);
write(x);
end;
end.

2) Добавим функцию seek

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var
f:file of integer;
x,i:integer;
begin
assignfile(f,'in.dat');
rewrite(f);
for I:=1 to 10 do
write(f,i);
close(f);
reset(f);
seek(f,4);
for i:=5 to 10 do
begin
read(f,x);
write(x);
end;
read(x);
end.

3) Работа с структурами. Все также просто.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
type
Point=record
x,y:integer;
end;
var
f:file of Point;
i:integer;
x:point;
begin
assignfile(f,'in.dat');
rewrite(f);
for I:=1 to 10 do
write(f,x);
close(f);
end.


редактирование бинарников в Java

Работа с бинарными файлами

Работа с бинарными файлами в C++

  • Вадим

    а можно записать в один бинарный файл несколько переменных типа word и несколько Tstrings, по отдельности я знаю как, но чтобы в один…

    • http://cybern.ru/ lordrp

      Ну это легко. Достаточно несколько раз вызвать функцию Write(name,9);, где на месте 9 должно находиться значение, которое вы хотите записать.

Научиться программировать

  • на Delphi

  • на Java

  • на C++