Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в файле [D7, WinXP]


SinnerPro ©   (2003-01-19 09:52:00) 

Вот. В общем дан файл, размером ~2,5-3 Mb. Надо, из него вытянуть количество последовательностей из 3х определенных букв. Файл содержит абсолютно все символы. Расстояние между последовательностями разное, в среднем от 5000 до 45000 символов. Желательно чтобы это происходило достаточно быстро, медленно я сам сделать могу ;).


Романов Р.В.   (2003-01-19 11:54:00) [1]

Можно несколько ускорить процесс поиска если проверять не все байты, а через 3. Для этого нужно получить маску.
b: Byte;
...
b :=(Ord("A") or Ord("G") or Ord("T")) xor $FF;

Сравниваешь каждый третий байт с этой маской
if (CurentByte and b) = 0 then
// Более точная проверка в окрестностях этого байта.

При некоторых условиях способ может оказаться медленнее прямого перебора.


SinnerPro   (2003-01-19 11:07:00) [2]

Song: Романов Р.В:

Да я пробывал, все равно тормазно как-то... ну если никак подругому нельзя, то ладно


Романов Р.В.   (2003-01-19 10:47:00) [3]

Читай файл в буфер целиком или кусками. Ищи последовательность в цикле.


Song   (2003-01-19 10:39:00) [4]

BlockRead+цикл будет вполне быстро
или через наследнные классы от TStream, если только чтение нужно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо