Показать сообщение отдельно
  #1  
Старый 15.05.2014, 00:28
Igor_Petrenko Igor_Petrenko вне форума
Прохожий
 
Регистрация: 15.05.2014
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Сформировать текстовый файл, в который записать все предложения исходного текста, сод

Всем доброй ночи
Помогите решить такое вот задание:

Сформировать текстовый файл, в который записать все предложения исходного текста, содержащие кому, а также нужно сформировать список, содержащий длину каждого предложения исходного текста.


Может что-то из этого кода можно "выковырять"?

Код:
procedure TForm1.Button1Click(Sender: TObject);
const
  //Разделители предложений.
  Df = ['.', '!', '?'];
  //Разделители слов.
  Da = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
var
  S : String;
  //P1 - позиция начала предложения. CntW - счётчик слов в предложении.
  i, CntW, P1, Len : Integer;
begin
  Memo2.Clear;
  
  //Исходный текст.
  S := Memo1.Text;
  Len := Length(S);
 
  //Обработка текста.
  P1 := 0;
  CntW := 0;
  for i := 1 to Len do begin
    //Отслеживаем начало предложения.
    if (i = 1) or (S[i - 1] in Df) then P1 := i;
    //Если символ не является разделителем слова.
    if not (S[i] in Da) then begin;
      //Отслеживаем конец слова и подсчитываем слово.
      if (i = Len) or (S[i + 1] in Da) then Inc(CntW);
    end;
    //Отслеживаем конец предложения.
    if (i = Len) or (S[i] in Df) then begin
      //Если количество слов >= 3, то добавляем это предложение
      //в Мемо результата.
      if CntW >= 2 then Memo2.Lines.Add( Copy(S, P1, i - P1 + 1) );
      //Сброс счётчика слов.
      CntW := 0;
    end;
  end;
end;
Ответить с цитированием