Поиск строки в бинарном файле | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Есть задача - найти смещение (номер байта от начала файла) в бинарном (двоичном) файле. Функция AT не подходит, т.к. предназначена для текста и текстовых файлов и выдаст неверное смещение строки с текстом в бинарном файле. К тому же функция AT не работает со строками, длина которых превышает 64 Kb. На VFP не создашь TMemoryStream с последующим вызовом CompareMem для значения Searchbuffer, как на Delphi. Остается смотреть в сторону функций C++, таких как memchr - Locate character in block of memory? Никто не пробовал обращаться из фокса к этой функции, предварительно описав её, как внешнюю из библиотеки msvcr70:
А может быть будут какие-то другие мысли, чем заменить функцию AT для поиска смещения строки (или определенного набора байтов) в бинарном файле? Хотелось бы найти самое простое решение. Исправлено 1 раз(а). Последнее : rvc44, 22.03.20 21:48 |
Re: Поиск строки в бинарном файле | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Вот эта тема forum.foxclub.ru натолкнула на мысль использовать CreateBinary.
|
Re: Поиск строки в бинарном файле | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Еще бы понять, как преодолеть лимит в 64 Kb? Размер бинарного файла составляет до 5 Мб. Может разбивать его на части с помощью ALines? Или всё-таки использовать memchr или что-то другое? Может быть читать с помощью API-функции ReadFile блоками по 64 Kb?
Исправлено 3 раз(а). Последнее : rvc44, 22.03.20 23:11 |
Re: Поиск строки в бинарном файле | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Горе от ума, называется...
------------------ WBR, Igor Исправлено 1 раз(а). Последнее : Igor Korolyov, 23.03.20 00:03 |
Re: Поиск строки в бинарном файле | |
---|---|
rvc44 Автор Сообщений: 2211 Откуда: Тамбов Дата регистрации: 06.12.2005 |
Действительно, проще не бывает! Меня смутило то, что в 16-ричном виде смещение не совпало на несколько байтов, но по факту вырезает всё как надо. Спасибо. Fox воистину крут! Наконец-то я доделал парсинг MTOM-вложений в СМЭВ 3.xx
Исправлено 1 раз(а). Последнее : rvc44, 23.03.20 03:07 |
© 2000-2024 Fox Club  |