Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
  #2  
Старый 15.05.2014, 01:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Цитата:
Сформировать текстовый файл, в который записать все предложения исходного текста, содержащие кому
И как ваш вопрос понимать изволите?
Это слово в предложении? Это адресат в некоем формате? Это просто запятая (по английски). О чем вообще речь идет?
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 17.05.2014, 01:20
Igor_Petrenko Igor_Petrenko вне форума
Прохожий
 
Регистрация: 15.05.2014
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Страдалецъ
И как ваш вопрос понимать изволите?
Это слово в предложении? Это адресат в некоем формате? Это просто запятая (по английски). О чем вообще речь идет?

Спасибо за ответ. Сорри, за неясность. Это обычная запятая в преложении (,).
Ответить с цитированием
  #4  
Старый 17.05.2014, 09:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Тогда все проще некуда. Используйте клас TStringList, он содержит методы которые легко позволяют решить эту задачу:
Код:
Var
  SL: TStringList;
  i: Integer;
begin
 SL := TStringList.Create;
 SL.StrictDelimiter := True;
 SL.Delimiter := ',';
 SL.DelimitedText := 'Это текст, в котором есть запятая, точка, вопросительный знак и прочее?';
 SL.SaveToFile('CommaFile.txt');
 for i := 0 to SL.Count - 1
 do SL.Strings[i] := SL.Strings[i] + ' - ' + IntToStr(Length(SL.Strings[i]));
 ShowMessage(SL.Text); 
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 17.05.2014 в 09:22.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:11.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter