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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2011, 11:00   #1
grater83
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 31
По умолчанию найти в мемо

как найти слово в мемо и удалить все строки где это слово встречается
grater83 вне форума Ответить с цитированием
Старый 13.03.2011, 11:27   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

примерно так:
Код:
var i : integer;
  TS : TStringList;
begin
  TS := TStringList.Create;
  TS.Text := Memo1.Text;
  for i:=TS.Count-1 downto 0
    do if Pos('ВашеСлово',TS.Strings[i])>0
       then TS.Delete(i);
  Memo1.Text := TS.Text;
  FreeAndNil(TS);
end;
Внимание.
Поиск слова будет производится только в заданном регистре. Т.е. если Вы зададите слово прописными буквами, то слова, написанные строчными - не найдутся.

И ещё. Удаление будет и тех строк, где слово входит в состав другого текста. Например, слово ЛОМ удаляться строки, где есть ОБЛОМ ДУБОЛОМ ЛОМБАРД и т.д.
Если это не устраивает, тогда надо: 1) решить, что является разделителем слов
2) парсить строку и разбирать на отдельные слова.
3) отдельные слова проверять на совпадения
на форуме полно примеров, так строчку разобрать на отдельные слова.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.03.2011, 11:33   #3
grater83
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 31
По умолчанию

спасибо....
grater83 вне форума Ответить с цитированием
Старый 20.03.2011, 14:42   #4
grater83
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 31
По умолчанию

как в мемо2 удалить такие же по счету строчки ,которые были удалены из stringlist'a
grater83 вне форума Ответить с цитированием
Старый 20.03.2011, 15:20   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

memo2.Lines.Delete(i); - удаляет i-ую строку из мемо.
для последующего удаления если знаешь номера строк, которые нужно удалить, то i:=i-1;
ТЕ:
Код:
memo2.Lines.Delete(1); - удалили вторую строку(тк счет идет с 0);
memo2.Lines.Delete(3); - удалили пятую строку(здесь т.к. была удалена 2ая строка, то счет уже идет на i--)
memo2.Lines.Delete(3); - удалили шестую строку
memo2.Lines.Delete(3); - удалили седьмую строку
memo2.Lines.Delete(4); - удалили девятую строку.
и тд
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 20.03.2011 в 15:33.
MyLastHit вне форума Ответить с цитированием
Старый 20.03.2011, 15:47   #6
grater83
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 31
По умолчанию

а если не знаю.
которые были удалены из stringlist'a
grater83 вне форума Ответить с цитированием
Старый 20.03.2011, 16:32   #7
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Тоесть тогда вопрос нужно формулировать вот так:
Хочу удалить строки из мемо, но не знаю какие. Посоветуйте.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 20.03.2011, 17:35   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
которые были удалены из stringlist'a
удалены кем? Вами (вашим кодом)? так в процессе удаления удаляйте строки из мемо..

p.s. А зачем ЭТО Вам?! Боюсь, что Вы задачу решаете совсем не так!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.03.2011, 21:32   #9
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

Цитата:
Сообщение от MyLastHit Посмотреть сообщение
Тоесть тогда вопрос нужно формулировать вот так:
Хочу удалить строки из мемо, но не знаю какие. Посоветуйте.
Хочешь совет? удаляй 5 строку

А если серьезно, меня поражают люди, которые хранят инфу в Memo.
Есть же способы лучше, а в Memo можно только отображать и получать инфу
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 20.03.2011, 22:01   #10
grater83
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 31
По умолчанию

возможно, может плохо объясяю.
есть мемо1 внем ищу слово и удаляю строку ,где это слово встречается
Код:
var i : integer;
  TS : TStringList;
begin
  TS := TStringList.Create;
  TS.Text := Memo1.Text;
  for i:=TS.Count-1 downto 0
    do if Pos('ВашеСлово',TS.Strings[i])>0
       then TS.Delete(i);
  Memo1.Text := TS.Text;
  FreeAndNil(TS);
end;
теперь, есть мемо2 внем текст,если в мемо1 нашлись строки с этим словом
например строки 1,5,7,9,и т.д. то и в мемо2 надо удалить такие же 1,5,7,9

Последний раз редактировалось grater83; 20.03.2011 в 22:04. Причина: я отображаю и инфу. перед отображением надо сделать так
grater83 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мемо и текст nikolas0 Общие вопросы Delphi 14 02.02.2011 01:26
мемо bulldog5293 Работа с сетью в Delphi 3 13.07.2010 21:43
Как скопировать текст из мемо одной формы в мемо другой CraZZy RabbIt Общие вопросы Delphi 4 27.02.2009 00:01
ЗАмена в мемо Drain Общие вопросы Delphi 2 29.01.2008 16:22
мемо ben95 Общие вопросы Delphi 1 29.01.2008 10:10