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

Вниз

Как БЫСТРО найти слово в текстовом файле   Найти похожие ветки 

 
Dimich1978   (2003-09-04 15:47) [0]

как это делается медленно известно, хотелось бы узнать как это можно быстрее зделать.
Мне необходимо найти слово в тестовом файле и начать считывать информацию дальше по этой строке.
За все ответы благодарен.


 
Рамиль   (2003-09-04 15:57) [1]

А как медленно то?
Грузишь весь текст в строку и применяешь Pos


 
Кирилл   (2003-09-04 15:59) [2]

stroka:="......";
for i:=1 to (stlist1.Count -1) do
begin
if Pos(stroka,stlist1[i]) = 0 then
..................


 
Vovchik_A   (2003-09-04 16:03) [3]

Медленно это как ? давай мух с котелтами разделим, а ?


 
Vorobyev Sergey   (2003-09-04 16:16) [4]

Быстро это так...

Создаешь индексный файл, где проиндексируешь все слова с номерами их позиций..
При поиске находишь слово в этом файле (это быстро), и по соответствующему номеру позиции переходишь в исходном тексте..
Приблизительно так работают поисковики в интернете..

Тоже поисковик пишешь?


 
Рамиль   (2003-09-04 16:22) [5]


> stroka:="......";
> for i:=1 to (stlist1.Count -1) do
> begin
> if Pos(stroka,stlist1[i]) = 0 then

Тогда уж Pos(stroka, strlist1.Text)


 
[lamer]Barmaglot   (2003-09-04 16:43) [6]

FAQ?
http://delphibase.endimus.com/?action=viewfunc&topic=strsearch&id=1039 4


 
Serginio666   (2003-09-04 17:45) [7]

Метод Боуера Мура Хар....

unit BM;

interface
Uses SysUtils;
Type
TCharArray= array[ #0..#255] of byte;
TArrUpperChar = array[ #0..#255] of Char;

Procedure FillArray(Var arr:TCharArray; Var st:String);
Function BMFinde(Const st,SourseStr:String;Var arr:TCharArray;m:integer):Integer;OverLoad;
Function BMFinde(Const st:String;SourseStr:Pointer;Var arr:TCharArray;m,n:integer):Integer;OverLoad;
var
ArrUpperChar:TArrUpperChar;
implementation
Var Sch:Char;
Type
PLongArray=^TLongArray;
TLongArray= array[1..2000000000] of Char;
Procedure FillArray(Var arr:TCharArray; Var st:String);
Var J:Integer;
len:Byte;
Begin
len:=Length(st);
FillChar(arr[ #0],256,Len);
st:=AnsiUpperCase(st);
For J:=1 to Len-1 Do
Begin
arr[st[J]]:=Len - j ;
end;
end;
Function BMFinde(Const st,SourseStr:String;Var arr:TCharArray;m:integer):Integer;
Var a, i, j,n,Shift:Integer;
Ch,LastChar:Char;
Begin
result:=0;
i:= m;
LastChar:=st[m];
n:=Length(SourseStr);
while i <=n Do
Begin
Ch:=ArrUpperChar[SourseStr[i]];
if Ch=LastChar Then
Begin
j:=1;
//if CompareMem(@SourseStr[i],@St[1], m-1) Then
While (j<m) and (ArrUpperChar[SourseStr[i-j]]=st[m-j]) Do inc(j);
If j=m Then
begin
result:=i;
Exit
end;
end;
Inc(i,arr[Ch]);
end;
end;
//-------------------------------------------------------------------- ----
Function BMFinde(Const st:String;SourseStr:Pointer;Var arr:TCharArray;m,n:integer):Integer;OverLoad;
Var a, i, j,Shift:Integer;
Ch,LastChar:Char;
Begin
result:=0;
i:= m;
LastChar:=st[m];
while i <=n Do
Begin
Ch:=ArrUpperChar[PLongArray(SourseStr)^[i]];
if Ch=LastChar Then
Begin
j:=1;
//if CompareMem(@SourseStr[i],@St[1], m-1) Then
While (j<m) and (ArrUpperChar[PLongArray(SourseStr)^[i-j]]=st[m-j]) Do inc(j);
If j=m Then
begin
result:=i;
Exit
end;
end;
Inc(i,arr[Ch]);
end;
end;
//-------------------------------------------------------------------- -----
initialization
For Sch:=#0 To #255 Do
ArrUpperChar[Sch]:=AnsiUpperCase(sch)[1];
end.


 
Polevi   (2003-09-04 18:37) [8]

+ Memory Mapped File



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

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

Наверх




Память: 0.46 MB
Время: 0.007 c
1-58775
konstantinov
2003-09-05 17:57
2003.09.18
Помогите с указателями


7-58922
maxon
2003-07-08 16:57
2003.09.18
запуск от другого имени


1-58699
Rel_
2003-09-08 09:37
2003.09.18
PolyBezierTo


3-58595
scorps
2003-08-26 16:38
2003.09.18
Delphi - Oracle


1-58695
MadGhost
2003-09-07 13:38
2003.09.18
Delphi и WinAPI, общие вопросы.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский