Текущий архив: 2003.06.30;
Скачать: CL | DM;
Вниз
Поиск последовательности в бинарном файле Найти похожие ветки
← →
DmitryA (2003-06-19 22:27) [0]Присоветуйте плиз :) :
Необходимо найти в бинарном файле произвольного размера некоторую последовательность, типа "ABC"#13#10"DEF"... Как это можно реализовать с наибольшей скоростью исполнения с использованием TFileStream ?
Т.е. необходимо определить Stream.Position с которой начинается
искомая последовательность в файле, чем быстрее - тем лучше :).
Спасибо
← →
Song (2003-06-19 22:51) [1]Дык циклом :)
← →
Palladin (2003-06-19 23:36) [2]нуууу.... перебор это конечно дело... можно его оптимизировать
проверять не каждый, а скажем каждый Length(SearchString)тый символ на вхождение в искомую строку, ну или последовательность...
собственно наткнулись на существующий символ и по нему поподробней поискали... полное ли совпадение...
получается тогда чем длинней искомая последовательность тем быстрей будет поиск...
← →
Johny B. (2003-06-20 06:41) [3]см.FileStream
← →
Palladin (2003-06-20 08:38) [4]
> Johny B. (20.06.03 06:41)
я думаю человек и так его смотрит
← →
Юрий Зотов (2003-06-20 09:28) [5]Если источник и образец заведомо не содержат символа #0, то их можно рассматривать, как строки. И использовать, например, библиотеку QStrings (потому что просто Pos работает довольно медленно).
А если могут содержать, то не самый, наверное, быстрый, но зато один из самых простых способов - CompareMem в побайтовом проходе по TMemoryStream (сравниваем на длине образца, если не совпало, сдвигаемся на 1 байт).
Что же касается оптимизации поиска - так на эту тему у Кнута полтома написано.
Страницы: 1 вся ветка
Текущий архив: 2003.06.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.007 c