| 
| 
 | Вопрос # 578/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты!Срочно нужна помощь. В BDS-2006 Для простейшего текстового редактора нужна функция, которая ищет во введенном тексте самое длинное предложение. Текстовый редактор у меня есть, но мыслей о том, как реализовать поиск этого самого предложения, к сожалению, нет. Не могли бы вы подсказать? (Если можно, то пожалуйста текстом программы)
 Заранее огромное спасибо!
 
|  |   Вопрос задал: SunnyKiller (статус: Посетитель)Вопрос отправлен: 16 мая 2007, 18:23
 Состояние вопроса: решён, ответов: 2.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, SunnyKiller!ну тут всё достаточно просто. Будем считать, что точка - это конец предложения.
 Второе, сообщу о интересной функции - posex(что, где, с какой позиции) она работает аналогично pos  только позволяет искать с определённой позиции. ну и схематический код.
 c,i,m:integer;
 s:string;
 
 s:=memo1.lines.text;
 i:=pos('.',s);
 c:=0;
 m:=0;
 while i<length(s) do
 begin
 i:=posex('.',s,c+1);
 if i=-1 then break;
 if i-c>m then m:=i-c;
 c:=i;
 end;
 в m - длина наибольшей строки. если ещё чуток код поправить, то можно запоминать начало строки.
 Потом ползуемся свойствами Memo1.SelStart и Memo1.SelLength для выделения строки
 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 16 мая 2007, 19:04
 Оценка за ответ: 5
 Комментарий к оценке: Спасибочки... Очень Вам признателен... |  Ответ #2. Отвечает эксперт: ANBsoft Здравствуйте, SunnyKiller!Здравствуйте, SunnyKiller!
 Дополню предыдущий ответ.
 Концом предложения может быть не только точка, но и вопросительный и восклицательный знак.
 Кроме того следует учитывать правила прямой речи (например: Он увидел друга и крикнул: "Привет! Давно тебя не видел."). Иначе говоря, знаки в кавычках не являются концом предложения.
 
|  | Ответ отправил: ANBsoft (статус: Студент)Время отправки: 17 мая 2007, 17:34
 Оценка за ответ: 5
 Комментарий к оценке: Огромное спасибо. Это всё, конечно, замечательно, но мне нужен простейший: предложения с прямой речью мне не нужны. А вот с тем, как выделить найденное предложение, у меня, честно говоря, возникли проблемы... Поскольку с SelLength  и SelStart еще ни разу, к сожалению, не встречался... |  
 Мини-форум вопросаВсего сообщений: 7; последнее сообщение — 16 мая 2007, 19:59; участников в обсуждении: 2. 
|   | SunnyKiller (статус: Посетитель), 16 мая 2007, 19:18 [#1]:Странно, но posex он пределил как undeclared identifier. впрочем также он нашел и строку memo1.lines.text; |  
|   | Dron (статус: Студент), 16 мая 2007, 19:20 [#2]:SunnyKiller: uses StrUtils; С уважением. |  
|   | SunnyKiller (статус: Посетитель), 16 мая 2007, 19:41 [#3]:Подключил этот модуль. Всё равно memo1.lines.text он определять не хочет.
 |  
|   | Dron (статус: Студент), 16 мая 2007, 19:46 [#4]:Значит Memo1 на форме нет. Логично? С уважением. |  
|   | SunnyKiller (статус: Посетитель), 16 мая 2007, 19:56 [#5]:Логично. Я смеюсь немогу над своим Делфи... Называется у меня элемент Tmemo на форме Mtext Набираю вместо Memo1.lines.text   Mtext.lines.text
 реакция у него на это та же самая.
 |  
|   | SunnyKiller (статус: Посетитель), 16 мая 2007, 19:58 [#6]:ЭЭЭ . Не . Наврал. Тип переменной string. но Делфи мне говорит, что  Type of expression must be BOOLEAN. то есть с Mtext.lines.text он согласен, но.... |  
|   | SunnyKiller (статус: Посетитель), 16 мая 2007, 19:59 [#7]:Извините.... Это я глюк словил...
 Я просто зачем-то If прописал перед этим. С ума схожу медленно...
 Еще раз спасибо.
 |  31 января 2011, 19:27: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5) Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |