Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Простая работа со строками не работает, помогите, уже ночь, никак не найду где 
V
    Опции темы
Ibragim
Дата 22.1.2007, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



Код

function FindA(Site: string; Pos: integer): integer;
begin
  while Pos < Length(Site) - 1 do
  begin
    if (Site[Pos] = '<') then
      if (Site[Pos + 1] = 'a') then
      begin
        Result := Pos;
        Break;
      end;
    Inc(Pos);
  end;
  Result := Length(Site);
end;


Вот такая функция, по задумке ищет '<a' .
Реально ничерта не ищет, при нахождении вхождения '<a' со строки "if (Site[Pos + 1] = 'a') then" вылетает на строку "Result := Length(Site);"
Окиньте свежим взглядом пожалуйста, где ошибка. Два часа бьюсь, что не так?
PM MAIL   Вверх
Alex
Дата 22.1.2007, 03:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код

function FindA(Site: string; Pos: integer): integer;
begin
  while Pos < Length(Site) - 1 do
  begin
    if (Site[Pos] = '<') then
      if (Site[Pos + 1] = 'a') then
      begin
        Result := Pos;
        Exit; // Выход из функции
      end;
    Inc(Pos);
  end;
  Result := Length(Site);
end;


PS: Break - это выход из цикла, а по окончанию цикла вы в любом случаи присваивали в результат длину строки.


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
aktuba
Дата 22.1.2007, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Правильно. У тебя находит, срабатывает Break, который выкидывает из цикла. А за циклом идет 
Код

Result := Length(Site);


Попробуй так:

Код

function FindA(Site: string; Pos: integer): integer;
begin
  Result := Length(Site);
  while Pos < Length(Site) - 1 do
  begin
    if (Site[Pos] = '<') then
      if (Site[Pos + 1] = 'a') then
      begin
        Result := Pos;
        Break;
      end;
    Inc(Pos);
  end;
end;


P.S.: пока писал, Alex ответил...  smile 

Это сообщение отредактировал(а) aktuba - 22.1.2007, 03:22


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Ibragim
Дата 22.1.2007, 03:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 28.9.2004
Где: Киев

Репутация: нет
Всего: нет



[censored 2] . Спасибо, ночь на дворе а проект сдавать надо. Сэнкс, все понятно, вопрос закрыт.
PS Умный компилер, зараза, он "Result := Pos;" вообще вырезает, туда Breakpoint установить нельзя.

Не удержусь, допишу
БОЛЬШОЕ СПАСИБО за быстрое реагирование!!!!

Это сообщение отредактировал(а) Ibragim - 22.1.2007, 03:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0599 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.