Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 23:14   #1
akademochka
Пользователь
 
Регистрация: 06.11.2011
Сообщений: 44
По умолчанию Найти слова, которые встречаются в тексте только 1 раз

Это одна из функций текстового редактора. Напишите, пожалуйста, код(Delphi)
akademochka вне форума Ответить с цитированием
Старый 05.10.2012, 12:40   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Мне показалась интересной задача, захотел решить, на уровень новичка код не тянет точно, поэтому придётся разобраться в коде, если хотеть упростить до безпалевного состояния. Это я следую своей давно объявленной политике помощи студентам - помогать только через сложные задания, для упрощения которых до уровня работы студента, надо хотя бы в них разобраться.

Кинуть 2 кнопки (кнопкам, ессно , назначить обработчики), мемо и листбокс. Я не менял имён компонентов, чтобы было легче ориентироваться, но готовые файлы проекта не дам, должны сами сделать.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    Memo1.Lines.LoadFromFile(Edit1.Text);
  except
    ShowMessage('Неверный файл, введите в поле ввода полное имя файла и повторите попытку');
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
const
 dlm: Char = '~';
var
  s: string;
  sl : TStringList;
  i: Integer;
begin
  ListBox1.Clear;
  s:= Memo1.Text;
  s := ReplaceStr(s, ' ', dlm);
  s := ReplaceStr(s, #13#10, dlm);
  s := ReplaceStr(s, ',', '');
  s := ReplaceStr(s, '.', ''); 
// добавить ещё несловесных элементов для исключения из поиска, всякие скобки слеши
  sl := TStringList.Create;
  try
    sl.Delimiter := dlm;
    sl.DelimitedText := s;
    sl.Sort;
    for i := 1 to sl.Count - 1 do
      if not AnsiSameText(sl[i], sl[i-1]) then // uses SysUtils - подключить модуль, если его нет
        ListBox1.Items.Add(sl[i-1]);
  finally
    sl.Free;
  end;
end;

Последний раз редактировалось phomm; 05.10.2012 в 12:45.
phomm вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод на экран символов, которые встречаются только один раз. Tsunami C++ Builder 1 10.04.2011 19:00
[C++ Builder 6] Вывод на экран символов, которые встречаются только один раз. Tsunami Помощь студентам 0 07.04.2011 09:21
Си. Вычеркнуть из слова X те буквы, которые встречаются в слове Z. hen Помощь студентам 1 29.04.2009 15:32
Из заданной символьной строки, выбрать те символы, которые встречаются в ней только один раз... Banny Паскаль, Turbo Pascal, PascalABC.NET 3 19.12.2008 06:15