ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #6181  
Старый 18.04.2010, 16:24
Аватар для EndLeSSDre@M
EndLeSSDre@M
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме:
3055344

Репутация: 259
Отправить сообщение для EndLeSSDre@M с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
Вот, ошибка не вылетает, если программу запускать отдельно, тоесть не под средой разработки, проверял на этом коде.

PHP код:
procedure TForm1.Button1Click(SenderTObject); 
begin 
IdHTTP1
.ProxyParams.ProxyServer:='114.127.246.36'
IdHTTP1.ProxyParams.ProxyPort:=8080
try 
  
IdHTTP1.Get('http://ya.ru'); 
  
showmessage('Рабочий'); 
except 
  showmessage
('Не рабочий'); 
  
// удаляем из списка
end
end


Меня смутили эти строки, при ошибке сохранить и освободить список? если тебе надо только удалить ненужный эл. списка, и продолжить цикл.
PHP код:
    ProxyList.SavetoFile('Proxy.txt');
    
ProxyList.free
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
 
Ответить с цитированием

  #6182  
Старый 18.04.2010, 16:25
Аватар для JnK
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Цитата:
Сообщение от EndLeSSDre@M  
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
Ошибка вылетает когда программа запущена под Delphi?
 
Ответить с цитированием

  #6183  
Старый 18.04.2010, 16:29
Аватар для EndLeSSDre@M
EndLeSSDre@M
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме:
3055344

Репутация: 259
Отправить сообщение для EndLeSSDre@M с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
Ошибка вылетает когда программа запущена под Delphi?
Всегда! если как отдельным приложением то такая ошибка: "List index of bounds (3)" и дальше если идти, то всегда ошибку выдает!
 
Ответить с цитированием

  #6184  
Старый 18.04.2010, 17:07
Аватар для JnK
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно.

насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются.

Другими словами F7 и смотри где ошибка.
 
Ответить с цитированием

  #6185  
Старый 18.04.2010, 17:12
Аватар для EndLeSSDre@M
EndLeSSDre@M
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме:
3055344

Репутация: 259
Отправить сообщение для EndLeSSDre@M с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно.

насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются.

Другими словами F7 и смотри где ошибка.
о_О спасибо большое! работает!
 
Ответить с цитированием

  #6186  
Старый 18.04.2010, 19:26
Аватар для GhostOnline
GhostOnline
Участник форума
Регистрация: 20.12.2008
Сообщений: 277
Провел на форуме:
828081

Репутация: 84
По умолчанию

Цитата:
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
Что за народ то а?
Это НЕ ошибка, это ИСКЛЮЧЕНИЕ.
А цель его - проинформировать тебя что время истекло. А ты должен, исходя из этого обработать исключение.
ЗЫ если ты хочешь отлаживать программу и чтобы сообщений об этом исключении не появлялось - добавь в список игнорируемых исключений. И можешь отлаживать спокойно. Это делается в опциях отладчика.
 
Ответить с цитированием

  #6187  
Старый 18.04.2010, 19:52
Аватар для S[N]EP
S[N]EP
Познающий
Регистрация: 29.08.2008
Сообщений: 86
Провел на форуме:
789539

Репутация: 53
По умолчанию

при работе с антикапчей, есть 2 кнопки
1 получает капчу и сохраняет в файл:
PHP код:
    form2.idhttp1.Request.CustomHeaders.Text:='Cookie: '+cookie;
streamresponse:=TMemoryStream.Create;
d:='http://127.0.0.1/captcha.php?key='+kapchaid;
form2.idhttp1.Get(d,streamresponse);
 
streamresponse.SaveToFile('rseserv.jpeg'); 
после чего кнопка отправки на антикапчу:
PHP код:
form2.edit3.Text:='recognizing...';
form2.Button1.Enabled:=false;
form2.edit3.Text:=recognize('rseserv.jpeg',form2.edit1.Text,false,false,false,0,0);
form2.Button1.Enabled:=true
и функция recognize.
PHP код:
function recognize(filenamestringapikeystringis_phrasebooleanis_regsensebooleanis_numericbooleanmin_lenintegermax_leninteger): string;
var
ftype,tmpstr,captcha_idString;
iinteger;
httpTIdHTTP;
multiTidmultipartformdatastream;

begin
if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;

ftype:='image/pjpeg';
if 
strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
if 
strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
if 
strpos(Pchar(filename),'png')<>nil then ftype:='image/png';

multi:=Tidmultipartformdatastream.Create;
multi.AddFormField('method','post');
multi.AddFormField('key',apikey);
multi.AddFile('file',filename,ftype);
if 
is_phrase=true then multi.AddFormField('phrase','1');
if 
is_regsense=true then multi.AddFormField('regsense','1');
if 
is_numeric=true then multi.AddFormField('numeric','1');
if 
min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
if 
max_len>0 then multi.AddFormField('max_len',inttostr(max_len));

http:=TIdHTTP.Create(nil);
tmpstr:=http.Post('http://antigate.com/in.php',multi);
http.Free;
captcha_id:='';
if 
strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if 
strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
if 
captcha_id='' then result:='ERROR: bad captcha id';
for 
i:=0 to 20 do
  
begin
  Application
.ProcessMessages;
  
sleep(5000);
  
http:=TIdHttp.Create(nil);
  
tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
  
http.Free;
  if 
strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
  if 
strpos(Pchar(tmpstr),'OK|')<>nil then
    begin
    result
:=AnsiReplaceStr(tmpstr,'OK|','');
    exit;
    
end;
  
Application.ProcessMessages;
  
end;
result:='ERROR_TIMEOUT';
end
так вот, когда первый раз отсылаю, всё работает, а когда идёт вторая попытка через определённый промежуток времени, выдаёт ошибку файл не может быть перезаписан т.к. он используется.... что делать?
 
Ответить с цитированием

  #6188  
Старый 18.04.2010, 20:01
Аватар для TrueBit
TrueBit
Познающий
Регистрация: 21.11.2009
Сообщений: 77
Провел на форуме:
2482290

Репутация: 29
По умолчанию

Цитата:
Сообщение от S[N]EP  
~~~
что делать?
PHP код:
function recognize(filenamestringapikeystringis_phrasebooleanis_regsensebooleanis_numericbooleanmin_lenintegermax_leninteger): string;
var
ftype,tmpstr,captcha_idString;
iinteger;
httpTIdHTTP;
multiTidmultipartformdatastream;

begin
if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;

ftype:='image/pjpeg';
if 
strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
if 
strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
if 
strpos(Pchar(filename),'png')<>nil then ftype:='image/png';

multi:=Tidmultipartformdatastream.Create;
multi.AddFormField('method','post');
multi.AddFormField('key',apikey);
multi.AddFile('file',filename,ftype);
if 
is_phrase=true then multi.AddFormField('phrase','1');
if 
is_regsense=true then multi.AddFormField('regsense','1');
if 
is_numeric=true then multi.AddFormField('numeric','1');
if 
min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
if 
max_len>0 then multi.AddFormField('max_len',inttostr(max_len));

http:=TIdHTTP.Create(nil);
tmpstr:=http.Post('http://antigate.com/in.php',multi);
http.Free;
multi.free;
captcha_id:='';
if 
strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
if 
strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
if 
captcha_id='' then result:='ERROR: bad captcha id';
for 
i:=0 to 20 do
  
begin
  Application
.ProcessMessages;
  
sleep(5000);
  
http:=TIdHttp.Create(nil);
  
tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
  
http.Free;

  if 
strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
  if 
strpos(Pchar(tmpstr),'OK|')<>nil then
    begin
    result
:=AnsiReplaceStr(tmpstr,'OK|','');
    exit;
    
end;
  
Application.ProcessMessages;
  
end;
result:='ERROR_TIMEOUT';
end
функцию recognize замени на эту

Последний раз редактировалось TrueBit; 18.04.2010 в 20:03..
 
Ответить с цитированием

  #6189  
Старый 18.04.2010, 20:29
Аватар для 3n0t
3n0t
Участник форума
Регистрация: 25.09.2009
Сообщений: 110
Провел на форуме:
1535356

Репутация: 71
Отправить сообщение для 3n0t с помощью ICQ
По умолчанию

как узнать вес html страницы через indy ?
или как сделатьв условии, чтобы проверялось на пустой ответ или пустую страницу?(весит 0кб)
 
Ответить с цитированием

  #6190  
Старый 18.04.2010, 20:42
Аватар для fenixelite
fenixelite
Участник форума
Регистрация: 07.02.2010
Сообщений: 189
Провел на форуме:
870084

Репутация: 79
Отправить сообщение для fenixelite с помощью ICQ
По умолчанию

3n0t,

я бы так сделал

PHP код:
s:=idHTTP.Get(link);
if 
s<>'' then ........ else .......... 
Хотя может можно как то по другому ))
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/WPAN/WLAN 2564 06.04.2026 23:31
[ *NIX ] Задай вопрос - получи ответ. Xszz *nix 1547 15.06.2010 15:41
[jQuery] - Задай вопрос, получи ответ Isis PHP, PERL, MySQL, JavaScript 62 25.12.2009 03:25
ЕсТь ВоПрос Guma Чаты 4 26.10.2005 21:48



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ