Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2012, 19:38
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию Подсчет частоты встречаемости слова

Есть текст в 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  
Старый 14.01.2012, 19:57
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Самое простое, при помощи функции 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));
Не забудь подключить модуль StrUtils.
__________________
Помогаю за Спасибо
Ответить с цитированием
Этот пользователь сказал Спасибо v1s2222 за это полезное сообщение:
ShutTap (14.01.2012)
  #3  
Старый 14.01.2012, 20:00
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

Спасибище огромное!!)
Ответить с цитированием
  #4  
Старый 17.01.2012, 23:07
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

надо чтобы слово искалось целиком, а не его вхождение в часто другого слова.

типа ищу "лес", должен найти "лес", но не "леса", например.
Ответить с цитированием
  #5  
Старый 17.01.2012, 23:24
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Проверяй следующий символ после найденного слова, если символ в пределах 'a..z, A..Z, а..я, А..Я', то пропускай его.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #6  
Старый 17.01.2012, 23:42
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

можно как то через
FindText(word, startpos, Endpos, [stMatchCase,stWholeWord]) у ричедита?
в начале вариант написан. там, как я понял, stWholeWord отвечает как раз за слово целиком, а не вхождение в другое слово.
Ответить с цитированием
  #7  
Старый 18.01.2012, 00:05
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В "сети" и такое имеется:
Код:
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;
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #8  
Старый 18.01.2012, 01:37
ShutTap ShutTap вне форума
Прохожий
 
Регистрация: 14.01.2012
Сообщения: 19
Репутация: 10
По умолчанию

вроде сделал, спасибо всем)

Последний раз редактировалось ShutTap, 18.01.2012 в 02:26.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025