Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Вниз

Поиск фразы в бинарном файле   Найти похожие ветки 

 
harisma   (2008-09-04 11:21) [0]

Собственно сабж. Как найти определенную фразу в бинарном файле?


 
Медвежонок Пятачок ©   (2008-09-04 11:22) [1]

чтением и сравнением


 
Правильный$Вася   (2008-09-04 11:25) [2]

фраза - понятие не бинарное, а музыкальное


 
brother ©   (2008-09-04 11:29) [3]

странная формулировка.... а бывают не бинарные?
8 бит= 1 байт... ну и понеслась!


 
harisma   (2008-09-04 11:29) [4]


> чтением и сравнением

Ну, это понятно. А если файл довольно большой, скажем больше 2Г, как долго будет продолжаться поиск?
Какие будут еще предложения (если существуют другие способы)?


> фраза - понятие не бинарное, а музыкальное

Не умничай. И так всем понятно, о чем речь идет.


 
Сергей М. ©   (2008-09-04 11:29) [5]


> Как найти определенную фразу в бинарном файле?


Сначала дай определение терминам "определенная фраза" и "бинарный файл"


 
harisma   (2008-09-04 11:29) [6]


> а бывают не бинарные?

Например текстовые


 
palva ©   (2008-09-04 11:30) [7]

Бинарных файлов не бывает. бывает бинарный способ доступа к нему.


 
Медвежонок Пятачок ©   (2008-09-04 11:32) [8]

Ну, это понятно. А если файл довольно большой, скажем больше 2Г

Если файл большой, то его читать нет необходимости.
Начинает работать угадывание.
Нужно просто угадать где в нем искомая фраза, не читая данных файла (так как он же большой)


 
brother ©   (2008-09-04 11:33) [9]

> бывает бинарный способ доступа к нему.

согласен, но тз - бред


 
palva ©   (2008-09-04 11:34) [10]


> Какие будут еще предложения (если существуют другие способы)?

А какие могут быть другие предложения? Можно, конечно, нанять программиста, но он тоже, собака, будет читать и сравнивать.


 
harisma   (2008-09-04 11:34) [11]


> Сначала дай определение терминам "определенная фраза" и
> "бинарный файл"

В условии задачи "бинарный файл" - любой нетекстовый файл (пример: файл картинки, архив, тот же вордовский файл и т.д.)
"определенная фраза" - в моем случае, это текстовая строка известного содержания.

Определение достаточное для получения ответа?


 
Правильный$Вася   (2008-09-04 11:34) [12]


>И так всем понятно, о чем речь идет.

а, так это вопрос для понятливых
догадайтесь семи, о чем он
ну-ну, догадайся сам ответ


 
{RASkov} ©   (2008-09-04 11:35) [13]

> [6] harisma   (04.09.08 11:29)

Все определения файлов - условно.
Но все файлы имеют однотипное содержание данных.


 
brother ©   (2008-09-04 11:35) [14]

> > а бывают не бинарные?
>
> Например текстовые

О_о , ты это..... теорию то учил?


 
brother ©   (2008-09-04 11:36) [15]

> Определение достаточное для получения ответа?

как правило в них текст присутствует и он означен байтами.... вот и лети по байтам... сравнивай с шаблоном...


 
Медвежонок Пятачок ©   (2008-09-04 11:37) [16]

как долго будет продолжаться поиск?

тебе в секундах ответить или в тиках?


 
harisma   (2008-09-04 11:42) [17]


> тебе в секундах ответить или в тиках?

Лучше в секундах, но можно и в тиках - я сам в секунды пересчитаю :)


 
Игорь Шевченко ©   (2008-09-04 11:43) [18]


> Не умничай. И так всем понятно, о чем речь идет.


а ты вопросы научись задавать.
Читай http://ln.com.ua/~openxs/articles/smart-questions-ru.html


 
Медвежонок Пятачок ©   (2008-09-04 11:45) [19]

Лучше в секундах, но можно и в тиках - я сам в секунды пересчитаю :)

пиццот с половиной.


 
Правильный$Вася   (2008-09-04 11:56) [20]


> В условии задачи "бинарный файл" - любой нетекстовый файл
> (пример: файл картинки, архив, тот же вордовский файл и
> т.д.)"определенная фраза" - в моем случае, это текстовая
> строка известного содержания.

а, так у тебя фраза может быть нарисована на картинке? ужос
или в ворде в неизвестной кодировке с установкой разных стилей для каждой буквы? успехов


 
Правильный$Вася   (2008-09-04 11:56) [21]

или вообще заархивирована с паролем, ага?


 
Vlad Oshin ©   (2008-09-04 11:57) [22]

findstr /?


 
clickmaker ©   (2008-09-04 12:25) [23]

> [7] palva ©   (04.09.08 11:30)
> Бинарных файлов не бывает. бывает бинарный способ доступа
> к нему.

текстовых файлов не бывает


 
Vlad Oshin ©   (2008-09-04 12:27) [24]

Удалено модератором


 
KygECHuK ©   (2008-09-04 12:43) [25]

Удалено модератором


 
brother ©   (2008-09-04 12:46) [26]

в общем... в бинарном файле "слова", "фразы" быть не может (тк нельзя точно сказать к какого бита начинается формирование байта)... это только набор 0 и 1 ...


 
harisma   (2008-09-04 13:03) [27]

Всем спасибо - все свободны. Обсуждение закрыто!!!
Без вашей помощи разобрался. >:-(


 
brother ©   (2008-09-04 13:04) [28]

> Всем спасибо - все свободны. Обсуждение закрыто!!!
> Без вашей помощи разобрался. >:-(

каков вопрос, таков ответ...


 
{RASkov} ©   (2008-09-04 13:08) [29]

> [27] harisma   (04.09.08 13:03)
> Без вашей помощи разобрался. >:-(

Вот уж не ври... :)


 
Palladin ©   (2008-09-04 13:11) [30]

Держи, болезный...

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;


но тут есть маленькая ошибка :) ну что ж, не все в этом мире так легко дается :)


 
Правильный$Вася   (2008-09-04 13:12) [31]


> Без вашей помощи разобрался. >:-(

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



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

Форум: "Начинающим";
Текущий архив: 2008.10.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.036 c
15-1219232749
oldman
2008-08-20 15:45
2008.10.12
Ой, как дурят нашего брата...


3-1207766708
Delphi7
2008-04-09 22:45
2008.10.12
Access/ADO/Delphi7, Проблема с LookUp-полями


15-1219142604
tytus
2008-08-19 14:43
2008.10.12
Не удаляется выделенный блок в редакторе...


15-1219142824
Vlad Oshin
2008-08-19 14:47
2008.10.12
откомпилируйте, пожалуйста, чему у вас получилось = i?


15-1219112093
Slider007
2008-08-19 06:14
2008.10.12
С днем рождения ! 19 августа 2008 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский