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


Автор: wadas 27.12.2009, 15:09
посоветуйте.
пытаюсь вытащить ссылку на капчу, представленную в таком виде:
"http://id.captcha.rambler.ru/4c57ee1b1f6cf1cc4970015ab3618e6f.jpg"
Код

    if pos('id.captcha.rambler.ru',R.Text)=0 then begin
      capcha:=Copy(R.Text,pos('/id.captcha.rambler.ru/',R.Text)+23,pos('.jpg',R.Text)-pos('/id.captcha.rambler.ru/',R.Text)-23);
//       form1.mmo1.Lines.Add(capcha);
       LinkToCap:=('http://id.captcha.rambler.ru/'+capcha+'.jpg');
       client.Get(LinkToCap,cap);
       cap.SaveToFile('captcha.jpg');

но не получается? помогите исправить...

Автор: AntonN 28.12.2009, 00:47
а что не получается? 

Автор: wadas 28.12.2009, 21:18
не получается сохранить картинку капчи. может не верно делаю Copy (4c57ee1b1f6cf1cc4970015ab3618e6f)???

Автор: artsb 29.12.2009, 11:35
ИМХО здесь ошибка:
Код

pos('.jpg',R.Text)

Искомая строка может встречаться несколько раз и не факт, что первый раз в ссылке на капчу. В результате, у вас неверная позиция. 
Лучше, начиная от сюда:
Код

pos('/id.captcha.rambler.ru/',R.Text)+23

бежать по строке до тех пор, пока не встретим точку.

Добавлено @ 11:39
И условие у вас неверное. Получается, что если строка "id.captcha.rambler.ru" НЕ будет найдена, тогда будет выполнять код if'а. Надо так:
Код

if pos('id.captcha.rambler.ru',R.Text)>0 then begin

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