Показать сообщение отдельно

  #4  
Старый 14.10.2009, 15:33
Пуховой
Banned
Регистрация: 25.11.2007
Сообщений: 62
С нами: 9715564

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

Кхм... Спасибо. Пользуюсь давно, а вот о возможностях без вашего пинка точно бы не догадался

Еще раз спасибо, нашел нужную ревизию

Что касается antigate:

Код:
function recognize (filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string;
var
  ftype, tmpstr, captcha_id: String;
  i: integer;
  http: TIdHTTP;
  multi: Tidmultipartformdatastream;
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;
  deletefile(filename);
  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:=1 to 12 do
  begin
    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;
  end;
  result:='ERROR_TIMEOUT';
end;
На 10.5.7, посл. работать не будет. 10.5.6 - работает.
 
Ответить с цитированием