![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Хочу написать конвертер бинарного файла, который переводит его на читабельный вид. Есть описание бинарного файла (структура) и сам файл. Не могу понять, как использовать описание этого файла при написании конвертера. С чего оттолкнуться, с чего начать подскажите пожалуйста
|
|
#2
|
||||
|
||||
|
для начала можно сделать просмотр в HEX+ASCII-виде, как это делает, например, Total Commander: F3-Options-Hex. вполне читабельно
![]() |
|
#3
|
||||
|
||||
|
Цитата:
|
|
#4
|
||||
|
||||
|
Есть готовый компон, который тебе представляет файл в стиле WinHEX.
MSHexEdit. |
|
#5
|
|||
|
|||
|
задача как-то неясно поставлена.
Начать можно например с чтения файла в структуру Например так Код:
type
TMyStruct=record
<здесь описание структуры>
end;
var
z:TMyStruct; //сюда копируется файл
procedure ReadMyStruct(fnam:string);
var
F:file of TMyStruct;
begin
assignfile(F,Fnam);reset(F);
read(F,z);
CloseFile(F);
end;а еще рекомендую почитать описание функций BlockRead, BlockWrite, работа с типированными и нетипированными файлами. |
|
#6
|
||||
|
||||
|
Цитата:
Берем книгу Льва Толстого и ставим в холодильник. Зачем читать файл в некую структуру? Файл произвольных двоичных данных. Вообще достаточно вычитывать по 16 байт за проход цикла, в array of byte к примеру, после чего в конечный файл записывать эти данные, обработав ф-ей IntToHex. |
|
#7
|
||||
|
||||
|
M.A.D.M.A.N.
Да с чего ты взял что нужно HEX-представление? Есть просто файл и есть описание, сколько байт прочитать для одной переменно сколько для другой и т.д. BlockRead и все. |
|
#8
|
|||
|
|||
|
И так есть бинарный файл, я написал программку, которая считывает ее. А также есть описание структуры файла, не могу понять как использовать ее, в смысле как написать эту структуру программно. Я так понял описание структуры файла используется чтобы мы правильно прочитали этот файл. Вот вложил описание этого файла.
|
|
#9
|
||||
|
||||
|
Итак пойдем плясать от печки:
1. У вас возможны 3 вида файла: IA.ICAMA, IA.ICIAR, IA.ICINA Последние 5 букв видимо расширение по которому вы будете определять тип данных в конкретном файле. Для первого типа файла имеем такое описание: Цитата:
Код:
Type ICAMA = record Data: Array[1..8192] of byte; end; И код для чтения данных записями будет такой: Код:
Type ICAMA = record Data: Array[1..8192] of byte; end; Var F: File of ICAMA; R: ICAMA; begin AssignFile(F, 'c:\IA.ICAMA'); Reset(F); while not Eof(F) do Read(F, R); CloseFile(F); end. ![]() А вот что касается чтения содержимого каждой из записи - это уже скорее всего в работу. Последний раз редактировалось Страдалецъ, 22.08.2011 в 14:39. |