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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2015, 11:29   #1
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию поиск слова в мемо

Такая проблема ищу слово в мемо:
Код:
var// Объявляем переменные
  Find: String; // Искомая строка
  i: Integer; // Счетчик для цикла
begin
  find := '1C';// Записываем в find текст из Edit
  for i := 0 to Memo2.Lines.Count-1 do// Запускаем цикл поиска строки
  If Pos(FIND, Memo2.Lines.Text)<> 0 then
showmessage('1');
Проблема в том что повторяется постоянный цикл!Выходит 10000 сообшений.Так вот как сделать чтоб после поиска цикл останваливался
mitiay вне форума Ответить с цитированием
Старый 26.02.2015, 11:50   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы вообще ищете НЕ ВЕРНО!
Цикл у Вас совсем не нужен (и не задействован)

так можно проверить, если ли нужная подстрока в тексте мемо2:
Код:
var// Объявляем переменные
  Find: String; // Искомая строка
begin
  find := '1C';// Записываем в find текст из Edit
  If Pos(Find, Memo2.Lines.Text)<> 0 then
          showmessage('1');
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.02.2015, 11:50   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А что надо то? Если найти первое вхождение - убери вообще цикл, если при этом важно знать в какой строке, то цикл оставить и поиск не в Text, а в Strings[i] и после первого вхождения Break
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.02.2015, 11:51   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Код:
  If Pos(FIND, Memo2.Lines[i])<> 0 then
showmessage('1');
Вы ищите во всем тексте а не в конкретной строке.
Человек_Борща вне форума Ответить с цитированием
Старый 26.02.2015, 11:55   #5
mitiay
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 288
По умолчанию

Нужно сделать так выполняется поиск, если нашел цикл останвливается, если не нашел цикл оставливается.В общем чтоб действие выполнялось один раз
mitiay вне форума Ответить с цитированием
Старый 26.02.2015, 11:56   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
if pos(...)>0 then begin
  r:=MessageDlg('Нашли!', 'Продолжить поиск?', mtInformation, [mbYes, mbNo], 0);
  case r of
  mryes: ;
  mrno: break;  // что это смотри здесь 
  end;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск слова в мемо mitiay Общие вопросы Delphi 1 18.08.2014 13:22
Вывод найденного слова на Мемо(Делфи 7) и стирать при поиски нового слова hasanovaaygerim Помощь студентам 0 20.11.2013 21:50
везде слова МЕМО was123 БД в Delphi 3 08.06.2013 19:15
Разбить текст на слова и произвести поиск каждого слова по текстовому массиву Burning_brook Microsoft Office Excel 2 22.05.2010 01:56
Поиск слова в поле типа МЕМО БД PARADOX KAZAKH БД в Delphi 2 05.06.2008 07:22