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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2012, 02:54   #1
Night_Devil
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 18
Печаль Проблема с удалением строк в TMemo

Доброго всем времени суток. Уже часа 2 бьюсь на одной проблемой. Необходимо циклом пробегаться по Мемо и удалять повторяющиеся строки. Делает цикл это ПРАКТИЧЕСКИ на ура....
В зависимости от общего количества строк, цикл 1 раз оставляет "повторяшку". Почему - понять не могу. Поэтому прошу помощи у вас, форумчане.
Вот код цикла:
Код:
 a := -1;
  repeat
    a := a + 1;
    for i := a + 1 to Memo3.Lines.Count - 1 do
    begin
      if (Memo3.Lines[i - 1] = Memo3.Lines[i]) then
      begin
        Memo3.Lines.Delete(i - 1);
        Memo1.Lines.Delete(i - 1);
      end;
      if (Memo3.Lines[a] = Memo3.Lines[i]) then
      begin
        Memo3.Lines.Delete(a);
        Memo1.Lines.Delete(a);
      end;
    end;
  until a = Memo3.Lines.Count - 1;
Night_Devil вне форума Ответить с цитированием
Старый 04.06.2012, 03:19   #2
Genco
Пользователь
 
Аватар для Genco
 
Регистрация: 16.11.2010
Сообщений: 46
По умолчанию

Это вообще не очень хорошая идея - менять размер набора, по которому проходишь циклом for.

Навскидку:
Код:
 a := -1;
  repeat
    a := a + 1;  
    b:=a+1;
    while (b<=Memo3.Lines.Count - 1) do
     begin
       if (Memo3.Lines[b] = Memo3.Lines[a]) then
        begin
         Memo3.Lines.Delete(b);
         Memo1.Lines.Delete(b);
        end
       else Inc(b);
     end;

  until a = Memo3.Lines.Count - 1;
Бложегов не имею, но найти меня можно в уютном междусобойчике тут: http://coverduck.ru
"Форум программистов, анархистов, анонимусов и просто любителей с интересом пообщаться"
Genco вне форума Ответить с цитированием
Старый 04.06.2012, 13:20   #3
Night_Devil
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 18
По умолчанию

Огромное спасибо за помощь. Только вместо Inc(b) я сделал b:=b+1
Night_Devil вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы с удалением строк (VBA) WennY Microsoft Office Excel 8 23.02.2012 18:50
Проблема с удалением файла Dimarik Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.06.2011 20:15
проблема с удалением массива в vc++ scripto Общие вопросы C/C++ 9 13.12.2010 21:48
проблема с удалением файла katttes Общие вопросы Delphi 3 30.04.2010 13:17