LINUX.ORG.RU

История изменений

Исправление saahriktu, (текущая версия) :

Можно, на макросах так наворачивают что выходит код как на C.

Во-первых, даже «как на C» код не получится уже из-за количества строк кода. Во-вторых, повторяю, даже на C нельзя писать в файл/читать из файла сразу конкретными структурами данных. А в Паскале можно. Вот примеры из книжки:

program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
Assign(f,'students.dat');
Rewrite(f);
Student.s_name := 'John Smith';
Student.s_addr := 'United States of America';
Student.s_batchcode := 'Computer Science';
Write(f,Student);
Close(f);
end.
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
assign(f, 'students.dat');
reset(f);
while not eof(f) do
begin
read(f,Student);
writeln('Name: ',Student.s_name);
writeln('Address: ',Student.s_addr);
writeln('Batch Code: ', Student.s_batchcode);
end;
close(f);
end.
Всего пара десятков строк. И не нужно разбирать прочитанные данные самостоятельно. Раз - и структура уже разобрана в памяти. Так нельзя даже на C.

На C можно, например, написать пару функций для извлечения данных из массива байтов и для помещения данных в массив байтов (и только они будут знать где и что в этом массиве) и работать через них с этим массивом байтов.

Это разные уровни.

Исходная версия saahriktu, :

Можно, на макросах так наворачивают что выходит код как на C.

Во-первых, даже «как на C» код не получится уже из-за количества строк кода. Во-вторых, повторяю, даже на C нельзя писать в файл/читать из файла сразу конкретными конструкциями. А в Паскале можно. Вот примеры из книжки:

program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
Assign(f,'students.dat');
Rewrite(f);
Student.s_name := 'John Smith';
Student.s_addr := 'United States of America';
Student.s_batchcode := 'Computer Science';
Write(f,Student);
Close(f);
end.
program DataFiles;
type
StudentRecord = Record
s_name: String;
s_addr: String;
s_batchcode: String;
end;
var
Student: StudentRecord;
f: file of StudentRecord;
begin
assign(f, 'students.dat');
reset(f);
while not eof(f) do
begin
read(f,Student);
writeln('Name: ',Student.s_name);
writeln('Address: ',Student.s_addr);
writeln('Batch Code: ', Student.s_batchcode);
end;
close(f);
end.
Всего пара десятков строк. И не нужно разбирать прочитанные данные самостоятельно. Раз - и структура уже разобрана в памяти. Так нельзя даже на C.

На C можно, например, написать пару функций для извлечения данных из массива байтов и для помещения данных в массив байтов (и только они будут знать где и что в этом массиве) и работать через них с этим массивом байтов.

Это разные уровни.