Консультация № 171731
29.08.2009, 19:45
0.00 руб.
0 8 0
Здравствуйте.
Пытаюсь сравнивать куки в компоненте idHttp следущим образом:
if cook.CookieCollection.Cookie['xxx','localhost.ru'].Value = 'zxc' then result:=1;
проблема в следущем: если значение куков совпадают в данном случае с zxc то результ присваивается 1, но если значения отличаются то поток зависает и стоит, непойму почему.

Если же проделать это через цикл, то все работает:
for i := 0 to Http.CookieManager.CookieCollection.Count - 1 do
StrPage := StrPage + cook.CookieCollection.Items[i].CookieText;
frmmain.Memo1.Lines.Add(StrPage);
if Length(StrPage)>0 then Result := 1 else Result := 0;

Но данный метод с циклом мне не подходит, посоветуйте ваши методы решения проблемы.

Обсуждение

Неизвестный
29.08.2009, 22:13
общий
Здесь нет причин для зависания. Эти два участка кода делают разное
Следовательно, причина зависания в другом чем-то
Неизвестный
30.08.2009, 08:22
общий
Ну дак а почему первый вариант виснет а второй нет? Смысл их действий почти одинаков - получить сохраненные куки.
Неизвестный
30.08.2009, 11:02
общий
А Вы уверены, что именно эта первая строка вызывает зависание? Пошаговой отладкой установили это?
Не понятно, как операция сравнения, из Ваших слов так следует, может вызвать зависание. Следовательно, ищите проблему в другом.
А разница в том, что во втором случае, идет обращение к экземплярам действительно содержащимся в коллекции, а в первом - к конкретному и надо быть уверенным, чтобы сравнивать, в том, что имеется. Вы это проверяли?
Неизвестный
30.08.2009, 11:06
общий
Программа не зависает, она просто стоит на месте как будто чегото ждет, я не уверен в том что экземпляры содержаться в коллекции, как это проверять в таком случае чтоб не вызывать остановки приложения?
Неизвестный
30.08.2009, 11:07
общий
И еще мысль: может эту проверку в отдельный поток вынести - може просто долго ждать надо?
Неизвестный
30.08.2009, 11:13
общий
Проверка находится в потоке, нет, время ожидания минимальное и с использованием цикла не превышает 5 секунд
Неизвестный
30.08.2009, 11:22
общий
А содержимое Memo проверить, что во втором случае? Ждать чего может? Конечно, соединения
Неизвестный
30.08.2009, 11:30
общий
Мемо во втором случае стоит лишь для того чтоб визуально видеть что содержит коллекция, соединение не может устанавливаться да даже больше 10 секунд, хотя я ждал по 10 минут
Форма ответа