Показать сообщение отдельно
  #2  
Старый 02.12.2010, 02:43
ЖабаДушитКота ЖабаДушитКота вне форума
Прохожий
 
Регистрация: 01.12.2010
Сообщения: 9
Репутация: 16
По умолчанию

В RichEdit в качестве текста вставлял твой же код. Находит все че хочешь

Код:
procedure TForm1.Button1Click(Sender: TObject);
var n : longint;
   T : array[0..40000] of char;
   ss,sss:string;
begin
  {for l1:=0 to richedit1.Lines.Count-1 do begin}
    ss:=RichEdit1.Text;
    for i:=0 to length(ss)-1 do begin
      T[i]:=ss[i];
    end;
    sss:=Edit1.text;
    for i:=0 to length(sss) do begin
      S[i]:=sss[i];
    end;
    m:=length(sss);
    //Prefix;
    k:=0;
    n:=length(ss);
    for i:=0 to n do begin
      while (k>0) and (S[k+1]<>T[i]) do
        k:=P[k];
      if S[k+1]=T[i] then
        k:=k+1;
      if k=m then begin
        //showmessage('vhodit');
        with RichEdit1 do begin
          SetFocus;
          SelStart:=i-m;
          Perform(EM_SCROLLCARET,0,0); //это для прокрутки (если найденное слово вне видимой области)
          SelLength:= Length(sss);
        end;
        k:=P[k];
        sleep(400); //это чтобы успеть посмотреть,
                                       //как выделяется найденное
      end;
    end;
  {end;}
end;
Ответить с цитированием