|
Вопрос # 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)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|