Там в широком смысле есть три подхода, которые я хотел бы рассмотреть:
1. Преобразование данных с Delphi кодом
Поскольку у вас уже есть Delphi код для чтения данных, и определены структуры, это будет проще и быстрее преобразовывать данные с помощью кода Delphi. Просто прочитайте его, используя свой существующий код, а затем выведите его в удобочитаемой форме. Например, используя встроенные библиотеки JSON.
2. Определить эквивалентную отформатирована структуру C# и блитирование двоичных данных на эту структуру
Определить отформатированную структуру в C#, который имеет одинаковое бинарное расположение к структуре, поставленной на диск. Это будет использовать LayoutKind.Sequential
и, возможно, указать Pack = 1
, если структура Delphi будет упакована. Для достижения бинарной эквивалентности вам может понадобиться использовать атрибут MarshalAs
для некоторых членов. Затем прочитайте структуру с диска в массив байтов. Выделите этот массив и используйте дескриптор Marshal.PtrToStructure
на прикрепленном объекте. Теперь у вас есть данные, вы можете написать это, как вам угодно.
Примера можно найти здесь: Proper struct layout from delphi packed record
3. Прочитайте поле структуры на поле с двоичным читателем
Вместо того, чтобы объявить бинарную совместимую структуру, которую вы можете использовать BinaryReader
для чтения из поток по одному полю за раз. Способы вызова, такие как Read
, ReadInt32
, ReadDouble
и т. Д. Позволяют вам прокладывать себе путь через запись. Помните, что поля будут записаны в том порядке, в котором была объявлена запись Delphi. Если исходная запись выровнена, а не упакована, вам нужно будет перешагнуть через любое дополнение. Опять же, как только у вас есть данные, доступные для вашего кода на C#, вы можете написать его, как вам будет угодно.
Точно так же, как и с C#, чтобы быть честным - прочитайте структуры в, напишите их в удобном для человека способом – BugFinder
Итак, я должен сначала перенести объект (или структуру?) На C#? А потом попробуйте их прочитать? – HyperX
Нет, Id stick с delphi, читая их. – BugFinder