protected override void DecodeSections() { // Datenblöcke "interpretieren" int filesectiontype; filesectiontype = (int)InternalFileSections.DescriptionBlock; if (Filesections.GetLength(filesectiontype) > 0) { Decode_DescriptionBlock(Filesections.GetSectionDataReader(filesectiontype), new DataBlock(0, Filesections.GetLength(filesectiontype))); } filesectiontype = (int)InternalFileSections.CharacterLookupTableBlock; if (Filesections.GetLength(filesectiontype) > 0) { Decode_CharacterLookupTableBlock(Filesections.GetSectionDataReader(filesectiontype), new DataBlock(0, Filesections.GetLength(filesectiontype))); } }
protected override void ReadSections(BinaryReaderWriter br) { // --------- Dateiabschnitte für die Rohdaten bilden --------- Filesections.AddSection((int)InternalFileSections.ContentsBlock, new DataBlock(ContentsBlock)); // GapOffset und DataOffset setzen SetSpecialOffsetsFromSections((int)InternalFileSections.PostHeaderData); if (GapOffset > HeaderOffset + Headerlength) // nur möglich, wenn extern z.B. auf den nächsten Header gesetzt { PostHeaderDataBlock = new DataBlock(HeaderOffset + Headerlength, GapOffset - (HeaderOffset + Headerlength)); Filesections.AddSection((int)InternalFileSections.PostHeaderData, PostHeaderDataBlock); } // Datenblöcke einlesen Filesections.ReadSections(br); // Pos. der anderen beiden Datenblöcke ermitteln ... Decode_ContentsBlock(Filesections.GetSectionDataReader((int)InternalFileSections.ContentsBlock), new DataBlock(0, Filesections.GetLength((int)InternalFileSections.ContentsBlock))); // ... und einlesen Filesections.Read((int)InternalFileSections.DescriptionBlock, br); Filesections.Read((int)InternalFileSections.CharacterLookupTableBlock, br); }