Найти и заменить последовательность в бинарном файле

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
kostyanet
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 10.06.2006 (Сб) 10:36

Найти и заменить последовательность в бинарном файле

Сообщение kostyanet » 05.11.2007 (Пн) 7:49

Привет, может быть вопрос глупый, но почему-то не удалось найти исходников на тривиальный поиск и замену последовательности (типа строки) в бинарном файле.

Я, конечно, написал свой код, но подозреваю что он корявый, потому что там не используюся укзатели с помощью которых можно быстро соединять массивы: чтобы заменить вхождение искомой строки приходится итерационно переписывать байты из одного заранее подготовленного массива в другой. А также сам поиск идет с помощью преобразования массива байтов по маске в строку и использования функции StrComp.

Конкретно задача такая. Я дизигнер полиграфии и мне нужно заменять в файлах EPS название одних цветов на другие. Например найти "PANTONE Cool Gray 5 CV" и заменить на "PANTONE 877 C". Мой код работает, но медленно, а мне надо не по одному цвету заменять, а по два или больше. По идее пост-скрипт часть файла EPS пишется в ASCII кодах, то есть, ее можно редактировать простым текстовым редактором, но как правило в файле дохрена бинарной информации - типа превью, включенные растры и прочая хрень.

В общем если есть то подкиньте ссылку на исходник работы с бинарными файлами в деле поиска и замены последовательности.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 05.11.2007 (Пн) 8:03

выложил бы свой способ для начала, а то несовсем ясно в чем сложность
Весь мир матрица, а мы в нем потоки байтов!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Найти и заменить последовательность в бинарном файле

Сообщение BV » 05.11.2007 (Пн) 10:14

kostyanet писал(а):то есть, ее можно редактировать простым текстовым редактором, но как правило в файле дохрена бинарной информации - типа превью, включенные растры и прочая хрень.


Hex-редатор в помощь...
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

kostyanet
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 10.06.2006 (Сб) 10:36

Сообщение kostyanet » 05.11.2007 (Пн) 13:41

Да я кажись притупил. Пытался написать собственную процедуру поиска вхождения последовательности, в то время как InstrB все быстро находит и не надо преобразовывать массив в строку - находит прямо в массиве.

kostyanet
Начинающий
Начинающий
 
Сообщения: 16
Зарегистрирован: 10.06.2006 (Сб) 10:36

Re: Найти и заменить последовательность в бинарном файле

Сообщение kostyanet » 05.11.2007 (Пн) 13:43

BV писал(а):
kostyanet писал(а):то есть, ее можно редактировать простым текстовым редактором, но как правило в файле дохрена бинарной информации - типа превью, включенные растры и прочая хрень.


Hex-редатор в помощь...

Ага, блин, сотню файлов в каждом по сотне вхождений хехом. Такое только русский флудераст может посоветовать...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 05.11.2007 (Пн) 14:11

kostyanet, у нас такое остроумие не цениться, а наказывается. Еще раз попробуешь заняться подобным словообразованием и вылетишь на пару недель.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList