![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 20.05.2012
Сообщений: 2
|
![]()
Суть такова:
Есть *.dat файлы, файлы структурные и их можно открыть уже существующей программой (Structorian), которая использует файлы *.strs (просто текстовики с необходимыми данными о структуре файла). Информация в файлах обычно представляет собой либо целые числа, либо числа с плавающей запятой, либо являются текстовыми строками. Именно поля этих типов и являются основой структур. Код:
Код:
первые 4 байта (u32 nBlocks) - количество блоков в файле. вторые 4 байта (u32 nBlocksColumns) - количество колонок в блоке. третьи 4 байта (u32 nBlocksSize) - длина блоков в байтах. Выглядит это так: ![]() Далее идут уже сами блоки подряд. В Structorian это представляется в виде таблицы, блоки выстраиваются в строки первый над вторым и так далее: ![]() К чему, собственно, я веду? Structorian даёт достаточно возможностей и хорошо работает, но в силу специфичности и количества редактируемых файлов, нужно что-то, что облегчит страдания в плане автоматизации некоторых действий, например: 1. Добавление блока: Чтобы добавить в файл блок, нужно в HEX-редакторе добавить количество байт, равное размеру блока и изменить значение количества блоков(или зайти в Structorian, изменить значение, сохранить файл и перезагрузить файл с уже новым значением количества блоков) . 2. Редактирование сразу нескольких колонок (в Structorian просто нет такой функции). И так далее и тому подобное. Поэтому прошу "пинка" в нужную сторону. Что мне использовать для чтения файлов так, как делает это Structorian? Ясно одно: для каждого отдельно взятого типа данных, которые могут встретиться в файле, нужно писать свою функцию, но какие операторы мне использовать? Я слаб и глуп и, возможно, когда сюда зайду в следующий раз, уже найду решение, но не факт, что оно будет правильным с точки зрения оптимизации, поэтому прошу помощи в указании направления "куда копать?". Всем спасибо. Последний раз редактировалось Enclave; 02.04.2015 в 14:16. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
окончательное представление в в виде таблицы
DbGrid + ClientDataSet 1. исходно пустой СlientDataSet 2. читаем структуру (.strs) анализируем и генерируем описания полей DefFileds (если не ошибаюсь) для данной структуры 3. создаем набор данных (ClientDataSet.CreateDataSet) и считываем исходные данные(рабочий файл) 4. начитываем из файла ВСЕ элементы блока по очереди (можно одновременно перенося в DataSet) можно копить в обычном буфере и потом разом но по отдельности перенести в DataSet ДЕЛАЕМ промежуточную редакцию данных в ClientDataSet так как нам удобно и обратно ~4. берем запись из ClientDataSet ~3. собираем бинарный блок по структуре и записываем разом или же пишем каждый элемент по отдельности ~2. записываем в файл P.S. подозреваю что там тоже самое.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 02.04.2015 в 16:46. |
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
![]()
Так автор вроде про реализацию пунка 2 и спрашивал.
А ClientDataSet и DbGrid это в Дельфи, а не в .NET.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа отображающая содержимое файла побайтно. | ruslansh | Помощь студентам | 2 | 25.01.2013 23:33 |
открытие и редактирование файла с++ билдер | woodik | Помощь студентам | 4 | 27.03.2012 16:28 |
Создание и редактирование файла (построчно) в С | olegarh94 | Общие вопросы C/C++ | 5 | 21.12.2011 17:22 |
Создание и редактирование текстового файла | sasha0123 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 04.12.2010 00:00 |
Открытие файла и создание графика на основе чисел из файла | Simon..14 | Общие вопросы C/C++ | 8 | 09.06.2009 10:18 |