IPB

Здравствуйте, гость ( Вход | Регистрация )

 Правила форума Всем прочитать перед созданием темы!
 
Ответить в данную темуНачать новую тему
Работа с файлами, поиск по сигнатуре
Neo 2002
сообщение 15.09.2004 - 17:00
Сообщение #1


Завсегдатай
Иконка группы

Группа: Пользователи
Пользователь №: 167
Сообщений: 183
Регистрация: 4.03.2003
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 0 раз(а)



Допустим мне надо найти в файле последовательность байт FE7455 и заменить эти байты на 909090?

Как это проделать на дельфи? Можно пример?
Перейти в начало страницы
Вставить ник
+Цитировать сообщение
Fallcom
сообщение 16.09.2004 - 03:39
Сообщение #2


The Last Gunslinger
Иконка группы

Группа: Пользователи
Пользователь №: 6829
Сообщений: 1008
Регистрация: 26.04.2004
Из: Беларусь, Гомель
Загружено: байт
Скачано: байт
Коэффициент: ---
Спасибо сказали: 10 раз(а)



Вот тебе пример замены трех байтов в файле начиная с пятой позиции.
Код
var
 f: File;
 s: array [1..3] of Byte;
begin
 s[1] := $90;
 s[2] := $90;
 s[3] := $90;
 AssignFile(f, 'c:\temp.tmp');
 Reset(f, 1);
 Seek(f, 5);
 BlockWrite(f, s, SizeOf(s));
 CloseFile(f);
end;


Как найти нужную последовательность, думаю, проблем тоже не будет. С помощью BlockRead считай весь файл целиком, найди нужный кусок простым сравнением (к сожалению аналога функции memcmp в Си для Delphi я не знаю) и получи искомую позицию. А там уж по аналогии с вышеописанным, только знай себе меняй позицию в Seek и данные в S.
Перейти в начало страницы
Вставить ник
+Цитировать сообщение

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

 



RSS Текстовая версия Сейчас: 24.04.2024 - 01:03