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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.03.2010, 11:31
WeG WeG вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 18
Репутация: 10
По умолчанию посчитать количество слов в тексте

Как посчитать количество Слов в текскте в мемо?
Ответить с цитированием
  #2  
Старый 06.03.2010, 13:22
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
Счастье

Можно как количество пробелов +1. Так проще всего. Или предлоги с союзами не нужно?

Ну есть ещё ньюансы если есть перенос строки, но думаю мысль ясна.
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.
Ответить с цитированием
  #3  
Старый 06.03.2010, 13:27
WeG WeG вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 18
Репутация: 10
По умолчанию

нужно все считать и предлоги, и союзы.
Ответить с цитированием
  #4  
Старый 06.03.2010, 13:30
WeG WeG вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 18
Репутация: 10
По умолчанию

функция но она не работает может кто подскажет почему
Код:
function KolSlov(var AMemo : Tmemo) : integer; 
Var
  n : integer;
  i : byte;
Begin
  n := 0;
  for i := 1 to AMemo.Lines.Count-1 do
    begin
      if (AMemo.Lines[i]<>' ') and (AMemo.Lines[i+1]=' ') then
        n:=n + 1;
    end;
end;
функция вызывается следующим образом:
Код:
  ValueListEditor2.Values['Слов'] := IntToStr(KolSlov(memo1));

Последний раз редактировалось WeG, 06.03.2010 в 13:33.
Ответить с цитированием
  #5  
Старый 06.03.2010, 13:38
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
По умолчанию

Цитата:
Сообщение от WeG
нужно все считать и предлоги, и союзы.
Ога, сам бы написал лучше

Функция:
Код:
function WordCount(Text : String) : LongWord;
var
 i : LongWord;
begin
Result:=0;
 for i:=0 to Length(Text) do
  if (Text[i]=' ') or ((Text[i]=#13) and (Text[i+1]=#10)) then inc(Result);
 if Result<>0 then inc(Result);
end;

Вызов:
Код:
ShowMessage('Words count: '+IntToStr(WordCount(Memo1.Text)));

Работает если между словами есть пробел, либо если есть переводы строк. Дерзай
PS> Кстати 2 пробела между двумя словвами ставить нельзя))
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.

Последний раз редактировалось Ferra, 06.03.2010 в 13:41.
Ответить с цитированием
  #6  
Старый 06.03.2010, 13:40
Аватар для Ferra
Ferra Ferra вне форума
Местный
 
Регистрация: 12.03.2006
Адрес: Минск
Сообщения: 527
Репутация: 1336
По умолчанию

Цитата:
Сообщение от WeG
функция но она не работает может кто подскажет почему
Код:
function KolSlov(var AMemo : Tmemo) : integer; 
Var
  n : integer;
  i : byte;
Begin
  n := 0;
  for i := 1 to AMemo.Lines.Count-1 do
    begin
      if (AMemo.Lines[i]<>' ') and (AMemo.Lines[i+1]=' ') then
        n:=n + 1;
    end;
end;
функция вызывается следующим образом:
Код:
  ValueListEditor2.Values['Слов'] := IntToStr(KolSlov(memo1));


Потому как Lines - это строки. а тебе нужно их содержимое.
__________________
Нет повести печальнее на свете, чем повесть о заклиневшем Resete.
Ответить с цитированием
  #7  
Старый 06.03.2010, 13:42
WeG WeG вне форума
Прохожий
 
Регистрация: 06.03.2010
Сообщения: 18
Репутация: 10
По умолчанию

Спасибо огромное! Все, дошло до меня
Ответить с цитированием
  #8  
Старый 06.03.2010, 13:43
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Подсчет кол-ва слов, подсчетом кол-ва пробелов.
На самом деле не самый удачный способ считать пробелы, так как, если пробелы будут вподряд стоять, то кол-во слов подсчитает неправильно.
Код:
function GetWordsCount(const aMemo:TMemo):Integer;
var
  i:integer;
begin
  Result:=0;
  with aMemo do
    if Length(Text)>0 then
      begin
      for i:=1 to Length(Text) do
        if (Text[i]  in [' ', #13]) then
          Inc(Result);
      if not (Text[i] in [' ', #13]) then inc(Result);
      end;
end;
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter