История изменений
Исправление 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 можно, например, написать пару функций для извлечения данных из массива байтов и для помещения данных в массив байтов (и только они будут знать где и что в этом массиве) и работать через них с этим массивом байтов.
Это разные уровни.
Исходная версия 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 можно, например, написать пару функций для извлечения данных из массива байтов и для помещения данных в массив байтов (и только они будут знать где и что в этом массиве) и работать через них с этим массивом байтов.
Это разные уровни.