Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 578

/ вопрос решён /

Здравствуйте, уважаемые эксперты!
Срочно нужна помощь. В BDS-2006 Для простейшего текстового редактора нужна функция, которая ищет во введенном тексте самое длинное предложение. Текстовый редактор у меня есть, но мыслей о том, как реализовать поиск этого самого предложения, к сожалению, нет. Не могли бы вы подсказать? (Если можно, то пожалуйста текстом программы)
Заранее огромное спасибо!

SunnyKiller Вопрос решён, но можно продолжить его обсуждение в мини-форуме

Вопрос задал: 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

SunnyKiller (статус: Посетитель), 16 мая 2007, 19:18 [#1]:

Странно, но posex он пределил как undeclared identifier. впрочем также он нашел и строку memo1.lines.text;
Dron

Dron (статус: Студент), 16 мая 2007, 19:20 [#2]:

SunnyKiller: uses StrUtils;
С уважением.
SunnyKiller

SunnyKiller (статус: Посетитель), 16 мая 2007, 19:41 [#3]:

Подключил этот модуль.
Всё равно memo1.lines.text он определять не хочет.
Dron

Dron (статус: Студент), 16 мая 2007, 19:46 [#4]:

Значит Memo1 на форме нет. Логично?
С уважением.
SunnyKiller

SunnyKiller (статус: Посетитель), 16 мая 2007, 19:56 [#5]:

Логично. Я смеюсь немогу над своим Делфи... Называется у меня элемент Tmemo на форме Mtext
Набираю вместо Memo1.lines.text Mtext.lines.text
реакция у него на это та же самая.
SunnyKiller

SunnyKiller (статус: Посетитель), 16 мая 2007, 19:58 [#6]:

ЭЭЭ . Не . Наврал. Тип переменной string. но Делфи мне говорит, что Type of expression must be BOOLEAN. то есть с Mtext.lines.text он согласен, но....
SunnyKiller

SunnyKiller (статус: Посетитель), 16 мая 2007, 19:59 [#7]:

Извините....
Это я глюк словил...
Я просто зачем-то If прописал перед этим. С ума схожу медленно...
Еще раз спасибо.

31 января 2011, 19:27: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.): Автоматическая обработка (2 и более ответов с оценкой 5)

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.02 сек.