Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2018, 13:23   #1
Fakov
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 85
По умолчанию Поиск и замена байтов

Собственно сабж братцы в следующем.
Хочу найти в файле двоичную последовательность, и перед ней заменить байт на нужный мне.
Делаю так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
  imp:=ExtractFileName(f);
  s:=$0D;

  fs:=TFileStream.Create(imp, fmOpenReadWrite);
  fs.Seek($42544E, fs.Position-1);
  fs.Read(s, sizeof(s));
  if s<>$0D42544E then
    begin
    fs.Seek($42544E, fs.Position-1);
    //fs.Position:=fs.Position-4;
    s:=$0D;
    fs.Write(s, sizeof(s));
    end;
  fs.Free;

end;
(это уже многочисленная вариация попытки, знаю что не работает). Собственно как это сделать правильно?

Я ищу последовательность $42544E, и хочу перед ней поставить байт 0D если там стоит 00 или 05. Как это сделать?
Fakov вне форума Ответить с цитированием
Старый 18.06.2018, 13:59   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Fakov Посмотреть сообщение
fs.Seek($42544E
это не поиск, это попытка установить позицию в файле по смещению 4346958

поиск придётся писать самому, сравнивая побайтно.
примерно, как тут описано - http://programmersforum.ru/showthread.php?t=196864
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.06.2018, 21:33   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

А если там непрерывная последовальность бит, и искомая маска не выравнивается на границу байта/слова ?
001011100010001100......, маска поиска 10111
Конкретно задача неизвестна, но не исключен вариант побитного сравнения

Последний раз редактировалось digitalis; 18.06.2018 в 21:36.
digitalis вне форума Ответить с цитированием
Старый 19.06.2018, 02:37   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,859
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
А если там непрерывная последовальность бит, и искомая маска не выравнивается на границу байта/слова ?
Для сего форума это перебор. Про биты ТС говорит только по своей малограмотности.
Ну и в добавок. Где, когда и в каком файле вы видели "последовательность бит" без привязки к байтам этого файла?
northener вне форума Ответить с цитированием
Старый 19.06.2018, 10:04   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

Я предвидел этот вопрос и накорябал черно-белый .bmp Так там побитно все. И без привязки (не к байтам, а к границам байта) .
И если бы я искал последовательность "точка - две_точки - три_точки" - она нашлась бы не на границе байта.
Впрочем, Вы правы - для этого вопроса это слишком глубокие дебри. Кстати, про биты ТС не говорит, это уж я расширил вопрос до неприличия
Изображения
Тип файла: jpg wh1.JPG (30.2 Кб, 98 просмотров)

Последний раз редактировалось digitalis; 19.06.2018 в 10:34.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск и замена II4eJI Microsoft Office Excel 2 09.01.2015 01:27
Поиск и замена на C# Vladsevsk Помощь студентам 0 14.05.2013 16:53
[Delphi] замена байтов nokius2011 Помощь студентам 5 30.01.2012 22:08
поиск и замена evdss Microsoft Office Excel 7 18.03.2011 02:05
поиск и замена gabbachild Microsoft Office Excel 4 26.01.2010 17:16