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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2009, 01:10   #1
Cold_Night
Пользователь
 
Регистрация: 13.02.2009
Сообщений: 32
По умолчанию Не работает функция проверки подстроки в строке

Код:
function Check(Main, Sub: AnsiString): Boolean;
var N: Cardinal;
begin
  for N:=1 to Length(Main) do
 if Copy(Main, N, Length(Sub)) = Sub then Result:=True else
 Result:=False;
end;
Функция возвращает неправильные значения. В чём ошибка? Заранее спасибо.
Cold_Night вне форума Ответить с цитированием
Старый 25.03.2009, 01:30   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Все можно сделать значительно проще, для этого существует функция pos. Почитайте справку, она вам еще не раз пригодится.

Код:
function Check(const Sub, Main: AnsiString): Boolean;
begin
 result:= pos(Sub, Main) <> 0;
end;
Я там в объявлении функции, Sub и Main местами поменял для удобства восприятия

Если же делать с помощью Copy, как делали вы, то нужно при совпадении строк выходить из цикла, иначе следующая итерация скорей всего перебьет значение True которое приняла result.

Код:
function Check(Main, Sub: AnsiString): Boolean;
var N: Cardinal;
begin
 Result:=False;
 for N:=1 to Length(Main) do
 if Copy(Main, N, Length(Sub)) = Sub then
   begin
     Result:=True;
     break;
   end;
end;

Последний раз редактировалось Gorychev; 25.03.2009 в 01:51.
Gorychev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Процедура или функция, удаляющая окаймляющие пробелы в строке (Delphi) Аццкий прогер Помощь студентам 2 03.03.2009 04:12
Код проверки столкновений не работает. Манжосов Денис :) Общие вопросы Delphi 8 02.02.2009 10:31
Функция проверки переполнения в Delphi TimeChip Общие вопросы Delphi 14 31.01.2009 17:04
Найти позицию подстроки в строке Ozerich Общие вопросы C/C++ 5 15.12.2008 16:06
Не работает функция gets()!!! Ilya'91 Общие вопросы C/C++ 1 28.07.2008 23:16