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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.05.2008, 01:40   #1
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
Вопрос удалить повторы

Всем привет!
Проблема в том что необходимо удалить повторы из TMemo уже который час мучаюсь всё никак не получается уже крыша едет... хотя казалось бы задачка простая!
вобшем имеется набор строк например:
Цитата:
1
2
3
1
5
8
8
из него нужно удалить повторяющиеся строки!
вот мой код:
Код:
for i:=0 to Memo1.Lines.Count do
    begin
       s:=Memo1.Lines.Strings[i];
       for n:=1 to memo1.Lines.Count do
       begin
              s1:=memo1.Lines.Strings[n];
               if s=s1 then memo1.Lines.Delete(n);
       end;
    end;
уже замучился с этим кодом насколько я понимаю всё должно работать но получается что результат удаляет повторяющиеся строки но также удаляет и не повтаряющиеся строки! т.е.
если на входе будет
1
2
3
4
то на выходя я получу
1
3
что я не так делаю?
зараннее спасибо за любую помощь!
FAiver вне форума Ответить с цитированием
Старый 31.05.2008, 02:18   #2
student_63
Пользователь
 
Аватар для student_63
 
Регистрация: 07.11.2007
Сообщений: 92
По умолчанию

сохраняй в отдельный массив каждую строку и сравнивай, после этого записывай неповторяющиеся строки куда-нить в отдельное место (например, StringList), после чего очищай мемо
Я уверен, вы согласитесь со мной... что если
со страницей 534 мы встречаемся во второй главе, то первая глава должна быть невыносимо длинной.
- ШЕРЛОК ХОЛМС
student_63 вне форума Ответить с цитированием
Старый 31.05.2008, 03:06   #3
Showy
Форумчанин Подтвердите свой е-майл
 
Аватар для Showy
 
Регистрация: 08.08.2007
Сообщений: 183
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,j: Integer;
begin
  for i := 0 to Memo1.Lines.Count - 1 do
    for j := 0 to Memo1.Lines.Count - 1 do
      if (Memo1.Lines.Strings[i] = Memo1.Lines.Strings[j]) and (i <> j) then
        Memo1.Lines.Delete(j);
end;
Until The End Of Time
Showy вне форума Ответить с цитированием
Старый 31.05.2008, 09:43   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,527
По умолчанию

Код:
for i:=0 to memo1.lines.count-1 do
  // зачем смотреть уже просмотренные строки j<i b и саму себя j=i
  for j:=i+1 to memo1.lines.count-1 do 
   if memo1.lines.strings[i]=memo1.lines.strings[j] then 
     memo1.lines.strings.delete(j);
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 31.05.2008 в 09:45.
evg_m вне форума Ответить с цитированием
Старый 01.06.2008, 21:14   #5
FAiver
Пользователь
 
Аватар для FAiver
 
Регистрация: 13.07.2007
Сообщений: 60
По умолчанию

всем огромное спасибо!
FAiver вне форума Ответить с цитированием
Старый 21.10.2010, 20:45   #6
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Данный способ можно настроить на ListView?
Shouldercannon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Повторы в ListView Shouldercannon Общие вопросы Delphi 2 21.10.2010 13:52
Как удалить из реестра? AngelOfDeath Общие вопросы Delphi 9 10.04.2008 18:09
Как удалить текст Lonix Общие вопросы Delphi 1 10.07.2007 15:08
как удалить анти вирус( касперский 2006)если она не работает и ее не возможно удалить Alar Общие вопросы Delphi 0 29.10.2006 21:36