IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Замена со смещением в бинарных файлах, найти определенное смещение и поменть.
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +



Добрый вечер.

С более менее простыми задачами могу помочь Сестре разобраться, а вот с сложными... уже не то... sad.gif не хватает знаний...

=======================================================
Задание:
Написать программу, которая принимает на вход текстовый файл , состоящий из строк вида "смещение значение" и в заданном бинарном файле изменяет байты по этим смещениям на эти новые значения.

Например, если текстовый файл имеет вид:
1556 235
1642 90
1643 90
1644 90
то значит, что в бинаррнике надо поменять 4 байта-один по смещению 1556 заменить на 235 и три, начиная со смещения 1642, заменить на 90.
=======================================================

Насколько я понимаю тут две части - открываем два файла. Бинарный разбираем в типизированную запись (или нет?), а текстовый - в двумерный массив. Потом идем по массиву и осуществляя переход со смещением - меняем - байты. Только как?

Есть идеи? о_О? Может, где посмотреть?

Заранее спасибо!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Цитата
Бинарный разбираем в типизированную запись (или нет?), а текстовый - в двумерный массив.
blink.gif Это зачем? Просто открываешь бинарник как file of byte, идешь по текстовому файлу:

while not eof(f) do begin
read(f, offset, new_val);
{ и сразу меняешь данные в бинарном файле }
seek(f_bin, offset); write(f_bin, new_val);
end;


Не надо ничего предварительно разбирать...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Цитата(volvo @ 24.12.2007 23:29) *

blink.gif Это зачем? Просто открываешь бинарник как file of byte, идешь по текстовому файлу:

while not eof(f) do begin
read(f, offset, new_val);
{ и сразу меняешь данные в бинарном файле }
seek(f_bin, offset); write(f_bin, new_val);
end;


Не надо ничего предварительно разбирать...

Спасибо, попробую... blum.gif Вот только вопрос есть, если привязываться к условиям задачи - то в seek - f_bin - это файл, а offset - это куда нужно перейти - т.е. для первой строчки условий:

seek(f_bin,1556); write(f_bin, 235);


Правильно понимаю? о_О?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Не совсем.
В операторе write должна быть переменная, а не константа. Но в переменной должно быть записано число 235.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Цитата(andriano @ 25.12.2007 12:57) *

Не совсем.
В операторе write должна быть переменная, а не константа. Но в переменной должно быть записано число 235.


Спасибо, буду побывать сегодня вечером. smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 8.12.2021 16:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name