Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.04;
Скачать: CL | DM;

Вниз

Работа с TMemo   Найти похожие ветки 

 
Nikki   (2011-08-12 14:48) [0]

Подскажите пожайлуста,как в тексте(загруженом в Memo) найти предложения содержащие более 30 сим. и вывести в соседний компонент Memo?


 
oldman ©   (2011-08-12 14:57) [1]

функциями поиска в тексте и функциями присваивания


 
oldman ©   (2011-08-12 15:12) [2]

И то лопухнуться можно. Если, например, искать точку как конец предложения
Нужен форматированный текст в Мемо. Например, одно предложение - одна строка.


 
OW ©   (2011-08-12 15:34) [3]

убедиться, что все собрано в одну строку. ( т.е. исключить символы перевода строки(возможно + исключить двойные пробелы))
Определить, что считается признаком конца предложения.
текущее положение = 0
повторять
 найти следующий признак конца предложения от текущего положения.
 если расстояние между ним и текущее положение > 30 символов
    записать в мемо2(возможно отнять кол-во пробелов)
 текущее положение =  признак конца предложения
цикл


 
Игорь Шевченко ©   (2011-08-12 15:57) [4]

в первую очередь выгрузит из мемо и работать со строкой. Иначе открытий чудных может быть дофига


 
Nikki   (2011-08-12 16:09) [5]

Спасибо большое!


 
OW ©   (2011-08-12 17:29) [6]

для сдачи лабы пойдет так, например
я "добрый" в пятницу :)

Const
 EndS: Set of char = [".", "!", "?"];
var
 S: string;
 i: Integer;
 C: integer;
begin
 S := mmo1.Lines.Text;
 S := StringReplace(S, #13#10, #32, [rfReplaceAll]);
 repeat
   S := StringReplace(S, #32#32, #32, [rfReplaceAll]);
 until  Pos(#32#32, S) = 0;

 C := 0;
 for i := 1 to Length(s) - 1 do
 begin
// тут бы с pos опять не мешало, или posEx, а не перебирать, но не охота думать
   if S[i] in EndS then
   begin
     mmo2.Lines.Add("--");
     mmo2.Lines.Add( IntToStr(i-C) + "ñèìâîëîâ");
     mmo2.Lines.Add(Copy(S, C, i-C));
     C := i + 1;
   end;
 end;
// если в конце точку забыли
 if Length(S) - C > 30 then
 begin
    mmo2.Lines.Add(Copy(S, C, Length(S) - C) + ".");
 end;
end;


 
oldman ©   (2011-08-12 20:25) [7]


> OW ©   (12.08.11 17:29) [6]


В тексте
"Не нужно использовать знаки `.`, `!` и `?` где не надо."
вся лаба идет прахом


 
SQLEXPRESS   (2011-08-12 21:20) [8]


> oldman ©   (12.08.11 20:25) [7]

а не нужно при сдаче лабы выбирать такой текст :)

а проблема на самом деле, конечно, несколько больше, чем кажется на первый взгляд. Любая прямая речь может порвать так, как Промту и не снилось..


 
Nikki   (2011-08-12 23:01) [9]

Еще раз спасибо за помощь!


 
SQLEXPRESS   (2011-08-12 23:28) [10]

хотя странно...суровые челябинские студенты и летом учатся? :)



Страницы: 1 вся ветка

Текущий архив: 2011.12.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
15-1312835391
Юрий
2011-08-09 00:29
2011.12.04
С днем рождения ! 9 августа 2011 вторник


2-1313322643
rammic
2011-08-14 15:50
2011.12.04
Указатель на Array


2-1313155354
qow
2011-08-12 17:22
2011.12.04
работа с формой


15-1313217574
coordinator-new-project
2011-08-13 10:39
2011.12.04
Приглашение для программистов поучаствовать в интересном проекте


2-1313583080
rammic
2011-08-17 16:11
2011.12.04
MemoryStream.SetSize не слушается