|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Поиск значения в файле большого размера (>1Гб)
Добрый день.
Есть искомое значение - массив из 256 байт. Нужно выполнить поиск данного массива в нетипизированном (бинарном) файле, размер которого может превышать 1 Гб, т.е. найти позицию первого элемента массива (смещение от начала файла). Попытка загрузить в строковую переменную через TFileStream и затем воспользоваться AnsiPos приводит к сообщению "Out of memory". Подскажите, с такими файлами в Delphi вообще реально работать, если да, то какими методами? |
#2
|
|||
|
|||
Я как-то реализовывал подобный алгоритм.
Делал примерно так. 1. Выделяется буфер длинной B+Length(Sample). B - базовый размер буфера, Sample - длинна искомых данных. 2. В цикле: 2.1. Чтаем в буфер данные 2.2. В цикле от 0 до Length(B) проверяем первый байт данных и Sample. Если совпадает, то начинаем сверять все отсальные байты Sample. Если все совпадает, то нашли нашу подстроку. 2.3. Смещаем указатель на файле на Length(Sample) байт назад и читаем новый блок данных. |