![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск фразы в бинарном файле [D5]
harisma © (2008-09-04 11:21:00)Собственно сабж. Как найти определенную фразу в бинарном файле?
Правильный$Вася (2008-09-04 13:12:00) [1]
> Без вашей помощи разобрался. >:-(
всегда бы так, а то сопли размазываются, а потом на них другие поскальзываются
Palladin (2008-09-04 13:11:00) [2]Держи, болезный...
Procedure FindInFile(Const fn:String;p:PByte;l:Integer;offsets:TList);
Const
BUFFSIZE=32*1024*1024;
Var
f:TFileStream;
next_srch_byte:PByte;
next_srch_byte_counter:Integer;
next_byte:Byte;
buf_readed_from:Integer;
buf_readed:Integer;
buf_pos:Integer;
buf:Array of Byte;
Function _GetNextByte(Var b:Byte):Boolean;
Begin
If buf_readed=buf_pos Then
Begin
Result:=f.position<>f.size;
If Not Result Then Exit;
buf_pos:=0;
buf_readed_from:=f.Position;
buf_readed:=f.Read(buf[0],BUFFSIZE);
End;
Result:=True;
b:=buf[buf_pos];
Inc(buf_pos);
End;
Procedure _ResetSrchByte;
Begin
next_srch_byte:=p;
next_srch_byte_counter:=0;
End;
Procedure _NextSrchByte;
Begin
Inc(next_srch_byte);
Inc(next_srch_byte_counter);
End;
Begin
SetLength(buf,BUFFSIZE);
f:=TFileStream.Create(fn,fmOpenRead or fmShareDenyWrite);
Try
buf_readed:=0; buf_pos:=0;
_ResetSrchByte;
While _GetNextByte(next_byte) Do
If next_byte<>next_srch_byte^ Then _ResetSrchByte Else
Begin
_NextSrchByte;
If next_srch_byte_counter=l Then
Begin
offsets.Add(Pointer(buf_readed_from+buf_pos));
_ResetSrchByte;
End;
End;
Finally
f.Free;
End;
End;
procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
offsets:TList;
i:Integer;
begin
offsets:=TList.Create;
Try
s:='ceil';
FindInFile('c:\Untitled-1.htm',@s[1],Length(s),offsets);
s:='';
For i:=0 to offsets.Count-1 Do
s:=s+IntToStr(Integer(offsets[i]))+#13#10;
ShowMessage(s);
Finally
offsets.Free;
End;
end;
но тут есть маленькая ошибка :) ну что ж, не все в этом мире так легко дается :)
{RASkov} (2008-09-04 13:08:00) [3]> [27] harisma (04.09.08 13:03)
> Без вашей помощи разобрался. >:-(
Вот уж не ври... :)
brother (2008-09-04 13:04:00) [4]> Всем спасибо - все свободны. Обсуждение закрыто!!!
> Без вашей помощи разобрался. >:-(
каков вопрос, таков ответ...
harisma (2008-09-04 13:03:00) [5]Всем спасибо - все свободны. Обсуждение закрыто!!!
Без вашей помощи разобрался. >:-(
brother (2008-09-04 12:46:00) [6]в общем... в бинарном файле "слова", "фразы" быть не может (тк нельзя точно сказать к какого бита начинается формирование байта)... это только набор 0 и 1 ...
KygECHuK (2008-09-04 12:43:00) [7]Удалено модератором
Vlad Oshin (2008-09-04 12:27:00) [8]Удалено модератором
clickmaker (2008-09-04 12:25:00) [9]> [7] palva © (04.09.08 11:30)
> Бинарных файлов не бывает. бывает бинарный способ доступа
> к нему.
текстовых файлов не бывает
Vlad Oshin (2008-09-04 11:57:00) [10]findstr /?
Правильный$Вася (2008-09-04 11:56:00) [11]или вообще заархивирована с паролем, ага?
Правильный$Вася (2008-09-04 11:56:00) [12]
> В условии задачи "бинарный файл" - любой нетекстовый файл
> (пример: файл картинки, архив, тот же вордовский файл и
> т.д.)"определенная фраза" - в моем случае, это текстовая
> строка известного содержания.
а, так у тебя фраза может быть нарисована на картинке? ужос
или в ворде в неизвестной кодировке с установкой разных стилей для каждой буквы? успехов
Медвежонок Пятачок (2008-09-04 11:45:00) [13]Лучше в секундах, но можно и в тиках - я сам в секунды пересчитаю :)
пиццот с половиной.
Игорь Шевченко (2008-09-04 11:43:00) [14]
> Не умничай. И так всем понятно, о чем речь идет.
а ты вопросы научись задавать.
Читай http://ln.com.ua/~openxs/articles/smart-questions-ru.html
harisma (2008-09-04 11:42:00) [15]
> тебе в секундах ответить или в тиках?
Лучше в секундах, но можно и в тиках - я сам в секунды пересчитаю :)
Медвежонок Пятачок (2008-09-04 11:37:00) [16]как долго будет продолжаться поиск?
тебе в секундах ответить или в тиках?
brother (2008-09-04 11:36:00) [17]> Определение достаточное для получения ответа?
как правило в них текст присутствует и он означен байтами.... вот и лети по байтам... сравнивай с шаблоном...
brother (2008-09-04 11:35:00) [18]> > а бывают не бинарные?
>
> Например текстовые
О_о , ты это..... теорию то учил?
{RASkov} (2008-09-04 11:35:00) [19]> [6] harisma (04.09.08 11:29)
Все определения файлов - условно.
Но все файлы имеют однотипное содержание данных.
Правильный$Вася (2008-09-04 11:34:00) [20]
>И так всем понятно, о чем речь идет.
а, так это вопрос для понятливых
догадайтесь семи, о чем он
ну-ну, догадайся сам ответ