If the binary part (subparts) was created by Delphi, or can be mapped directly to Delphi record definitions, then you may be able to either use move or dereference pointers to records and save a lot of work extracting individual fields.