Вниз
Скачать: CL | DM;

Поиск в файле   Найти похожие ветки 

← →
SinnerPro   (2003-01-19 09:52) [0]

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


← →
Song ©   (2003-01-19 10:39) [1]

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


← →
Романов Р.В. ©   (2003-01-19 10:47) [2]

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


← →
SinnerPro   (2003-01-19 11:07) [3]

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

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


← →
Романов Р.В. ©   (2003-01-19 11:54) [4]

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

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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.01 c
7-87148
maxim2
2002-11-14 12:51
2003.01.27
Подскажите у кого стоит WinME, WinNT, Win2000 и WinXP


14-87052
Первый
2003-01-11 18:45
2003.01.27
Второй


14-87105
Groove_
2003-01-08 14:03
2003.01.27
Защита от дебагеров


3-86639
mao
2003-01-07 18:48
2003.01.27
Проблема с кодировкой при чтении записей из dbf-файла в разных ОС


6-87015
Свой
2002-11-25 21:32
2003.01.27
TidSMTPServer




   Наверх