Главная страница
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.014 c
6-1227641223
Michael
2008-11-25 22:27
2011.12.04
IdFTP - плавающие ошибки Socket Error # 10061 и 10054


15-1313261161
Jeer
2011-08-13 22:46
2011.12.04
День физкультурника


2-1314022808
Mishanja
2011-08-22 18:20
2011.12.04
Формирование TreeView


2-1313737240
Фотошопп2017
2011-08-19 11:00
2011.12.04
максимальный размер Timage?


6-1246539062
GanibalLector
2009-07-02 16:51
2011.12.04
Работа с сокетами (теория)