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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2011, 21:22   #1
piksel111
 
Регистрация: 17.04.2011
Сообщений: 7
По умолчанию list index out of bounds (4) - что за зверь?

Вот код:
Код:
function TOAuthRequest.GetSignableParameters: string;
var
  x: integer;
  parm: string;
begin
  parm := '';
  x := FParameters.IndexOfName('oauth_signature');
  if x <> -1 then
    FParameters.Delete(x);
  for x := 0 to FParameters.Count -1 do
  begin
    if x = 0 then
    begin
      FParameters.ValueFromIndex[x] := TOAuthUtil.urlEncodeRFC3986(FParameters.ValueFromIndex[x]);
      parm := FParameters.Names[x] + TOAuthUtil.urlEncodeRFC3986('=') + TIdURI.PathEncode(FParameters.ValueFromIndex[x]);
    end
    else
    begin
!!! тут тормозит дебагер      parm := parm +  TOAuthUtil.urlEncodeRFC3986('&') +
              FParameters.Names[x] + TOAuthUtil.urlEncodeRFC3986('=' + FParameters.ValueFromIndex[x])
    end;
  end;
  Result := parm;
end;

В чём проблема?
piksel111 вне форума Ответить с цитированием
Старый 04.10.2011, 21:42   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

list index out of bounds, выход за грани дозволенного
т.е. у вас есть последовательность от 0 до 32, вы пытаетесь стучать в 33, которого в этой последовательности нету, следовательно вызывается такое исключение.
Проще - это обращение к не существующему элементу, или к элементу с не существующим индексом.


проблема целиком и полностью в вашем for to do

может вам стоит начинать с 1 и убрать -1, а может вам нужно начинать с 0 и убрать -1... просто проведите эксперимент. Все зависит от того, чему принадлежит ваш .Count. Массив, список, стёк..

P.S. вскобках указывается оибочный индекс(к которому стучала программа и выпала в осадок отладчика).
Человек_Борща вне форума Ответить с цитированием
Старый 04.10.2011, 21:47   #3
piksel111
 
Регистрация: 17.04.2011
Сообщений: 7
По умолчанию

Получил ответ:
После выполнения цикла в Names[x] идет обращение к переменной цикла, которая в Delphi (да и в любом Паскале) принимает значение БОЛЬШЕЕ верхней границы.

В вашем случае - Count.

Только я вот ничего и не понял из этого. Как исправить то?

Эксперименты пробовал не помогает
piksel111 вне форума Ответить с цитированием
Старый 04.10.2011, 22:01   #4
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

Проверь что лежит в FParameters.ValueFromIndex[x] (попробуй без него сделать, если ошибки не будет, то копай дальше в эту сторону) и пользуйся F7 вместо F9
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 04.10.2011, 22:39   #5
piksel111
 
Регистрация: 17.04.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от _Troy Посмотреть сообщение
Проверь что лежит в FParameters.ValueFromIndex[x] (попробуй без него сделать, если ошибки не будет, то копай дальше в эту сторону) и пользуйся F7 вместо F9
Пробовал ошибка остаётся.


Это вообще беда что я только не делал всё равно она вылетает..
piksel111 вне форума Ответить с цитированием
Старый 04.10.2011, 22:53   #6
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

А так пробовал?)))
Код:
for x := 0 to 0 do
А какого вида лежит инфа в FParameters?
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 04.10.2011, 22:56   #7
piksel111
 
Регистрация: 17.04.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от _Troy Посмотреть сообщение
А так пробовал?)))
Код:
for x := 0 to 0 do
А какого вида лежит инфа в FParameters?
так не выдаёт.

FParameters: TStringList;

Самое интересное что когда пол года назад я работал с этой библиотекой на другой версии делфи, всё было отлично =(

Последний раз редактировалось piksel111; 04.10.2011 в 22:59.
piksel111 вне форума Ответить с цитированием
Старый 04.10.2011, 22:59   #8
_Troy
Я не простой
Пользователь
 
Аватар для _Troy
 
Регистрация: 29.09.2011
Сообщений: 77
По умолчанию

Не знаю...
Попробуй еще такие варианты поочереди

Код:
parm := parm +  TOAuthUtil.urlEncodeRFC3986('&')
parm := parm +  TOAuthUtil.urlEncodeRFC3986('&') + FParameters.Names[x]
parm := parm +  FParameters.Names[x]
parm := parm +  TOAuthUtil.urlEncodeRFC3986('=' + FParameters.ValueFromIndex[x])
parm := parm +  FParameters.ValueFromIndex[x]
И что такое TOAuthUtil?
Знание бывает двух видов. Мы сами знаем предмет — или же знаем, где найти о нем сведения
_Troy вне форума Ответить с цитированием
Старый 04.10.2011, 23:41   #9
piksel111
 
Регистрация: 17.04.2011
Сообщений: 7
По умолчанию

for x := FParameters.Count -1 downto 0 do

так работает, но не так как нужно, ибо задом наперёд всё делает.

Цитата:
Сообщение от _Troy Посмотреть сообщение
И что такое TOAuthUtil?
ошибка не в нём.

Есть ещё советы?
piksel111 вне форума Ответить с цитированием
Старый 05.10.2011, 08:47   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Наконец-то включить дебагер и посмотреть где, почему ошибка... Вы разб\работкой впервые занялись?
p51x вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
List index out of bounds (0) waka2ebawer Работа с сетью в Delphi 2 17.02.2011 06:30
List index of bounds(7) priamm Общие вопросы Delphi 7 14.05.2010 15:00
List index out of bounds (91) KoBRaAndrey Общие вопросы Delphi 6 25.12.2009 15:29
List index out of bounds (44) KoBRaAndrey Общие вопросы Delphi 5 11.12.2009 23:03