Главная страница
    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.008 c
14-58835
Knight
2003-08-31 22:57
2003.09.18
Помогите квест пройти...


1-58653
Рома
2003-09-04 11:54
2003.09.18
XP стиль все портит :(((((


14-58896
KaPaT
2003-08-28 16:32
2003.09.18
Бортовые компьютеры автомобилей (BMW, Mercedes и т.д.)


14-58855
panov
2003-08-29 22:29
2003.09.18
Вопрос по настройке DNS и SMTP.


14-58871
Kost
2003-08-29 20:16
2003.09.18
StringGird





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