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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2011, 15:39   #1
Maincore
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 51
По умолчанию Delphi search

Здравствуйте уважаемые форумчане! Надеюсь на вашу помощь!
Итак задача в следующем:
Мне нужно организовать поиск предложений по компоненту memo, критерии поиска следующие:
Найти первое предложение взятое с edit:если находит,то тогда уже проверить существует ли предложение (взятое с переменой) находящееся после найденного предложения с edit?
Вот приблизительная схема работы:

Надеюсь на вашу помощь!

А чуть не забыл вот мой код:

Цитата:
var
con,i,h:integer;

begin
con:=Memo1.Lines.Count-1;
For i:= 0 to con do
begin

if Pos(edit1.text,Memo1.Lines.Strings[i])>0 then
begin
For h:= i to con do
begin
if Pos(find,Memo1.Lines.Strings[i])>0 then
begin
ShowMessage ('Find');
end;
end;
end;
end;
end;

Последний раз редактировалось Maincore; 27.07.2011 в 15:46.
Maincore вне форума Ответить с цитированием
Старый 27.07.2011, 16:01   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

так а вопрос в чём? Код вроде выглядит рабочим, немного причесать и готово:

Код:
var
  con,i,h:integer;
begin
  con:=Memo1.Lines.Count-1;
  For i:= 0 to con do begin
    //
    if Pos(edit1.text,Memo1.Lines.Strings[i])>0 then begin
      //
      For h:= i to con do begin
        //
        if Pos(find,Memo1.Lines.Strings[i])>0 then begin
           //
           ShowMessage ('Find');
           break;
        end;
      end; // for h
      //
      break;
    end; // pos edit
  end; // for i
end;
Регистр, кстати, надо учитывать при поиске?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 28.07.2011, 16:57   #3
Maincore
Пользователь
 
Регистрация: 06.07.2011
Сообщений: 51
По умолчанию

В принципе я нашел свою ошибку она заключалось в следующем

Цитата:
For h:= i to con do begin
//
if Pos(find,Memo1.Lines.Strings[h])>0 then begin
//
ShowMessage ('Find');
break;
end;
Но возник ли следующий вопрос:
Функция Pos у меня находить не полные строки к примеру:
В мемо текст следующий " 15 часов 45 мин 00 сек"
А искаемый текст выглядит так " 15 часов 45 мин" то функция находить их равными!
Это нормально так и должно быть?

P.S.
регист особого значения не имеет
Maincore вне форума Ответить с цитированием
Старый 28.07.2011, 17:41   #4
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
По умолчанию

Да, для этой функции это нормально.

Pos возвращает номер символа в строке, с которого начинается искомая тобой фраза. Она не сравнивает, она ищет фразу в предложении и говорит насколько далеко от начала эта фраза.

Последний раз редактировалось gesper; 28.07.2011 в 17:44.
gesper вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinXP search Артэс Windows 2 13.03.2011 12:34
Search Ekатерина Общие вопросы C/C++ 2 24.04.2009 20:08