Замена со смещением в бинарных файлах, найти определенное смещение и поменть. |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Замена со смещением в бинарных файлах, найти определенное смещение и поменть. |
volsub |
Сообщение
#1
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
Добрый вечер. С более менее простыми задачами могу помочь Сестре разобраться, а вот с сложными... уже не то... не хватает знаний... ======================================================= Задание: Написать программу, которая принимает на вход текстовый файл , состоящий из строк вида "смещение значение" и в заданном бинарном файле изменяет байты по этим смещениям на эти новые значения. Например, если текстовый файл имеет вид: 1556 235 1642 90 1643 90 1644 90 то значит, что в бинаррнике надо поменять 4 байта-один по смещению 1556 заменить на 235 и три, начиная со смещения 1642, заменить на 90. ======================================================= Насколько я понимаю тут две части - открываем два файла. Бинарный разбираем в типизированную запись (или нет?), а текстовый - в двумерный массив. Потом идем по массиву и осуществляя переход со смещением - меняем - байты. Только как? Есть идеи? о_О? Может, где посмотреть? Заранее спасибо! |
volvo |
Сообщение
#2
|
Гость |
Цитата Бинарный разбираем в типизированную запись (или нет?), а текстовый - в двумерный массив. Это зачем? Просто открываешь бинарник как file of byte, идешь по текстовому файлу:while not eof(f) do begin Не надо ничего предварительно разбирать... Сообщение отредактировано: volvo - |
volsub |
Сообщение
#3
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
Это зачем? Просто открываешь бинарник как file of byte, идешь по текстовому файлу: while not eof(f) do begin Не надо ничего предварительно разбирать... Спасибо, попробую... Вот только вопрос есть, если привязываться к условиям задачи - то в seek - f_bin - это файл, а offset - это куда нужно перейти - т.е. для первой строчки условий: seek(f_bin,1556); write(f_bin, 235); Правильно понимаю? о_О? |
andriano |
Сообщение
#4
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Не совсем.
В операторе write должна быть переменная, а не константа. Но в переменной должно быть записано число 235. |
volsub |
Сообщение
#5
|
Группа: Пользователи Сообщений: 6 Пол: Мужской Репутация: 0 |
|
Текстовая версия | 23.12.2024 19:39 |