![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Есть текст в RichEdit, есть слово в Edit. Нужно посчитать, сколько раз это слово встречается в тексте.
я в программировании не бум-бум, в инете искал, сделал так: Код:
while RichEdit1.FindText(word, startpos, Endpos, [stMatchCase,stWholeWord])<>-1 do
begin
Inc(ii); // + к числу слов
startpos:=startpos+pos(word,RichEdit1.Text);
end;Последний раз редактировалось lmikle, 14.01.2012 в 21:12. |
|
#2
|
||||
|
||||
|
Самое простое, при помощи функции PosEx, примерный набросок:
Код:
var
Count: Integer;
Curr: Integer;
begin
Count := 0;
Curr := Pos(Edit1.Text, RichEdit1.Text);
while(Curr <> 0) do begin
inc(Count);
Curr := PosEx(Edit1.Text, RichEdit1.Text, Curr+1);
end;
ShowMessage('Кол-во слов в тексте: ' + IntToStr(Count)); |
| Этот пользователь сказал Спасибо v1s2222 за это полезное сообщение: | ||
ShutTap (14.01.2012)
| ||
|
#3
|
|||
|
|||
|
Спасибище огромное!!)
|
|
#4
|
|||
|
|||
|
надо чтобы слово искалось целиком, а не его вхождение в часто другого слова.
типа ищу "лес", должен найти "лес", но не "леса", например. |
|
#5
|
||||
|
||||
|
Проверяй следующий символ после найденного слова, если символ в пределах 'a..z, A..Z, а..я, А..Я', то пропускай его.
|
|
#6
|
|||
|
|||
|
можно как то через
FindText(word, startpos, Endpos, [stMatchCase,stWholeWord]) у ричедита? в начале вариант написан. там, как я понял, stWholeWord отвечает как раз за слово целиком, а не вхождение в другое слово. |
|
#7
|
||||
|
||||
|
В "сети" и такое имеется:
Код:
function SearchForText_AndSelect(RichEdit: TRichEdit; SearchText: string): Boolean;
var
StartPos, Position, Endpos: Integer;
begin
StartPos := 0;
with RichEdit do
begin
Endpos := Length(RichEdit.Text);
Lines.BeginUpdate;
while FindText(SearchText, StartPos, Endpos, [stMatchCase])<>-1 do
begin
Endpos := Length(RichEdit.Text) - startpos;
Position := FindText(SearchText, StartPos, Endpos, [stMatchCase]);
Inc(StartPos, Length(SearchText));
SetFocus;
SelStart := Position;
SelLength := Length(SearchText);
end;
Lines.EndUpdate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SearchForText_AndSelect(RichEdit1, 'Some Text');
end; |
|
#8
|
|||
|
|||
|
вроде сделал, спасибо всем)
Последний раз редактировалось ShutTap, 18.01.2012 в 02:26. |