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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2019, 13:58   #11
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Код:
for I := 1 to memo2.Lines.Count -1 do

if pos(memo3.Text,memo2.Lines[i])=0 then
 begin
    memo3.Lines.Add(memo2.Lines[i])
 end
только одно вхождение нашел остальные игнорит
linda88 вне форума Ответить с цитированием
Старый 10.06.2019, 14:04   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
for I := 0 to memo2.Lines.Count -1 do
  if memo3.Lines.IndexOf(memo2.Lines[i])<0 then memo3.Lines.Add(memo2.Lines[i]);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.06.2019, 14:09   #13
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Вышло а почему у меня не получалось?
linda88 вне форума Ответить с цитированием
Старый 10.06.2019, 14:10   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Почитай все предыдущие посты ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.06.2019, 12:56   #15
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

удалить пустые строки пробовала вот так
Код:
for I := 1 to memo2.Lines.Count -1 do

if (memo3.Lines.IndexOf(memo2.Lines[i])<0) and  (length(memo3.Lines[i])=0)  then
 begin
   I2:=I2+1;
   memo3.Lines.Add(inttostr(I2)+memo2.Lines[i]);
   end;
и вот так

Код:
for I := 1 to memo2.Lines.Count -1 do
begin
 if (length(memo3.Lines[i])=0)  then
 end;
 for I := 1 to memo2.Lines.Count -1 do
if memo3.Lines.IndexOf(memo2.Lines[i])<0  then
 begin
   I2:=I2+1;
   memo3.Lines.Add(inttostr(I2)+memo2.Lines[i]);
   end;

Последний раз редактировалось linda88; 11.06.2019 в 13:02.
linda88 вне форума Ответить с цитированием
Старый 11.06.2019, 13:02   #16
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
for I := 1
чего от 1, а не от 0?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.06.2019, 13:13   #17
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

Ну это нечего не изменило
Код:
for I := 0 to memo2.Lines.Count -1 do
begin
 if (length(memo3.Lines[i])=0)  then
 memo3.Lines.Delete(i);
 end;
 for I := 0 to memo2.Lines.Count -1 do
if memo3.Lines.IndexOf(memo2.Lines[i])<0  then
 begin
   I2:=I2+1;
   memo3.Lines.Add(inttostr(I2)+memo2.Lines[i]);
   end;
и вот так
Код:
for I := 0 to memo2.Lines.Count -1 do
if (memo3.Lines.IndexOf(memo2.Lines[i])<0) and (length(memo2.Lines[i])=0) then
 begin
   I2:=I2+1;
   memo3.Lines.Add(inttostr(I2)+memo2.Lines[i]);
   end;

Последний раз редактировалось linda88; 11.06.2019 в 13:18.
linda88 вне форума Ответить с цитированием
Старый 11.06.2019, 13:23   #18
linda88
Пользователь
 
Регистрация: 17.01.2019
Сообщений: 78
По умолчанию

вот так стало лучше:
Код:
for I := 0 to memo2.Lines.Count -1 do
begin
 if (length(memo2.Lines[i])=0)  then
 memo2.Lines.Delete(i);
 end;
 for I := 0 to memo2.Lines.Count -1 do
if memo3.Lines.IndexOf(memo2.Lines[i])<0  then
 begin
   I2:=I2+1;
   memo3.Lines.Add(inttostr(I2)+memo2.Lines[i]);
   end;
но стали дубликаты оставаться
linda88 вне форума Ответить с цитированием
Старый 11.06.2019, 13:28   #19
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от linda88 Посмотреть сообщение
вот так стало лучше:
никогда не удаляйте записи в прямом цикле for
либо используйте цикл while\repeat, либо обратный for

сравните
Код:
for I := memo2.Lines.Count -1 downto 0 do
   if (length(memo2.Lines[i])=0)  then  memo2.Lines.Delete(i);
это раз.

а второе.
если Вы дальше переносите записи из Memo2 в Memo3
то зачем Вам вообще удалять пустые строки из Memo2
ведь достаточно добавить условие if в цикл переноса.
и не надо ничего удалять. Будет быстро и хорошо.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.06.2019, 13:29   #20
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
Ну это нечего не изменило
Если у тебя две конфеты и каждую нужно слопать. Первую пропускаем и кушаем только вторую или хавкаем обе - что-то изменилось?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление дубликатов SolovejK Общие вопросы Delphi 7 13.03.2015 23:31
Удаление дубликатов Wind-up Bird Microsoft Office Excel 9 02.02.2012 12:49
Удаление дубликатов строк hon Паскаль, Turbo Pascal, PascalABC.NET 10 02.08.2011 05:29
удаление дубликатов в ListView fate Общие вопросы Delphi 8 12.05.2011 16:51
Удаление дубликатов Deltist Microsoft Office Excel 11 14.01.2011 16:01