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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2010, 13:43   #1
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
Вопрос Удаление одинаковых слов в Memo.

Добрый день..
В Memo1 находится некий текст, из которого нужно удалить только одинаковые слова.
Как такое сделать ?
Я могу сделать тока удаление строк, если совпадают две строки последние.. Ну вот что я написал :
Код:
var s,str:string;
i:integer;
begin
for i:=0 to memo1.Lines.Count-1 do begin
str:=memo1.Lines.Strings[i];
s:=memo1.Lines.Strings[i+1];
if (str=s) then begin
memo1.Lines.Delete(i);
end;
end;
sxcine вне форума Ответить с цитированием
Старый 28.12.2010, 13:50   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы сначала разделил на список слов
Код:
var s:TStringList;
...
 s.DelimitedText:=Memo.Lines.Text;
...
А потом в цикле
Код:
i:=0;
while i<s.Count do begin
 Выяснял есть ли копия слова s[i] в списке s
inc(i);
end;
Например еще одним циклом от i до конце списка пока не найдено слово s[i], и если найдено Метод delete
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.01.2011, 19:40   #3
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

а можно в цикле сразу ?
я знаю, что нужен цикл в цикле, только
голова не соображает как именно сделать..
sxcine вне форума Ответить с цитированием
Старый 02.01.2011, 20:07   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а можно в цикле сразу ?
можно... а зачем?!
во-первых, это намного сложнее.
во-вторых, надо писать функцию выделения слова, и в цикле "дёргать" её.
А без выделения из текста слов никуда не денешься:
у Вас же задание "... удалить повторяющиеся слова"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.01.2011, 21:12   #5
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

ошибся - удалить одинаковые строки..
зачем ? я просто не очень разбираюсь в Стринглисте..
sxcine вне форума Ответить с цитированием
Старый 02.01.2011, 21:23   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте вот такой код:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i, j : integer;
begin
  i := Memo1.Lines.Count-1;
  while i>=0 do begin
     j := Memo1.Lines.IndexOf(Memo1.Lines[i]);
     while (j>=0) and (j<i) and (i>=0) do begin
       Dec(i);
       Memo1.Lines.Delete(j);
       if i>=0 then
         j := Memo1.Lines.IndexOf(Memo1.Lines[i]);
     end;
     Dec(i);
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.01.2011, 21:31   #7
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Незнаю. Я в таких случаях создаю новый пустой список и добавляю туда строки из старого. Если строка уже есть, то не добавляю. А потом подменяю список.
Sibedir вне форума Ответить с цитированием
Старый 03.01.2011, 12:56   #8
sxcine
Пользователь
 
Аватар для sxcine
 
Регистрация: 26.05.2010
Сообщений: 78
По умолчанию

спасибо Сергею!
код работает!
тему можно закрывать
sxcine вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение количества одинаковых слов в строке. brainy_man Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 10.05.2010 02:58
Количество одинаковых слов в таблице K608723 Microsoft Office Excel 1 22.09.2009 00:33
удаление одинаковых слов (С/С++) jewel Помощь студентам 1 12.12.2008 15:14
Поиск одинаковых слов (Delphi 7) hooch Помощь студентам 4 27.11.2008 20:14