Описываешь струкруры блоков данных файла как записи. Потом открываешь файл через поток и начинаешь оттуда эти структуры читать.
Я не знаю формата этого файла, но как вообще будет выглядеть код (для некоторого виртуального файла) могу показать:
Пусть у нас в файле сначала идет заголовок, содержащий сигнатуру файла, его мажорную и минорную версии и кол-во блоков данных. Каждый блок данных предваряется некоторым дескриптором, состоящим из типа блока и его размера. Далее идут данные блока и следующий блок с дескриптором.
Код:
type
TFileHeader = packed record
Signature : DWORD;
VerMajor : BYTE;
VerMinor : BYTE;
BlocksCount : DWORD;
end;
TBlockDescription = packed record
BlockType : BYTE;
BlockSize : DWORD;
end;
TFullBlock = record
Descr : TBlockDescription;
Data : Pointer;
end;
procedure ReadFile(AFileName : String);
var
F : TFileStream;
H : TFileHeader;
B : Array Of TFullBlock;
I : Integer;
begin
F := TFileStream.Create(AFileName,fmOpenRead);
Try
F.ReadBuffer(H,SizeOf(TFileHeader));
SetLength(B,H.BlocksCount);
For I := 0 To H.BlocksCount-1 Do
Begin
F.ReadBuffer(B[i].Descr);
GetMem(B[i].Data,B[i].BlockSize);
F.ReadBuffer(B[i].Data^,B[i].BlockSize);
End;
Finally
F.Free;
End;
end;