Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Простая работа со строками не работает


Автор: Ibragim 22.1.2007, 03:04
Код

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);"
Окиньте свежим взглядом пожалуйста, где ошибка. Два часа бьюсь, что не так?

Автор: Alex 22.1.2007, 03:18
Код

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 - это выход из цикла, а по окончанию цикла вы в любом случаи присваивали в результат длину строки.

Автор: aktuba 22.1.2007, 03:22
Правильно. У тебя находит, срабатывает 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 

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

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)