Консультация № 63755
22.11.2006, 19:24
0.00 руб.
0 4 2
Уважаемые эксперты! Не могли бы вы показать на примере пример работы с функцией BlockRead и с классом TFileStream на следующем примере: Есть некий бинарный файл FileVar: file у которого
type
TZag = record //структура заголовка длинной 8 байт
param1:char; //4 байта
param2:word; //2 байт
param3:cardinal;//4 байта
end;
необходимо открыть файл и прочитать заголовок в параметры

Обсуждение

Неизвестный
22.11.2006, 19:48
общий
это ответ
Здравствуйте, Delphi-n!
Смотрите приложение.
Для чтения из потока применяется не BlockRead, а Read и ReadBuf

Приложение:
var m:tMemoryStream; z:TZag;begin;m:=tmemoryStream.create;m.loadFromFile(‘Имя файла‘);m.seek(soFromBegin, 0);m.Read(z, sizeof(z);m.free;showmessage(inttostr(z.param1));
Неизвестный
22.11.2006, 21:31
общий
Спасибо,но я имел ввиду BlockRead не с чтением из потока а 2 примера с тем и с тем
Неизвестный
23.11.2006, 00:43
общий
Я бы вам особенно рекомендовал использовать только функцию sizeof, для вычисляения размера записи. Если у вас char - 4 байта...
Неизвестный
23.11.2006, 02:24
общий
это ответ
Здравствуйте, Delphi-n!
var
F: file;
Z: TZag;
begin
AssignFile(F, ‘c:\filename.bin‘);
Reset(F,1);
try
BlockRead(F, Z, SizeOf(Z));
except
CloseFile(F);
end;
end;

Вот только заголовок у Вас не 8 байт, а 10 :)
Форма ответа