Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.31;
Скачать: CL | DM;

Вниз

Файл занят другим процессом.   Найти похожие ветки 

 
HF-Trade   (2009-04-19 14:45) [0]

Помогие мне а?=)

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://anti-captcha.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://anti-captcha.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;

procedure TForm1.Button1Click(Sender: TObject);
var
tmpParams:TStringList;
Captcha:TMemoryStream;
...........
...........
begin
rsltedit.Text:="recognizing...";
tmpList.Clear;
Button1.Enabled:=false;

tmpParams:=TStringList.Create;
tmpParams.Add("login="+Login);
tmpParams.Add("firstname="+FistName);
tmpParams.Add("lastname="+LastName);

tmpList.Items.Text:=IdHTTP1.Post(урл,tmpParams);

tmpParams.Add(еще параметры);

Captcha:= TMemoryStream.Create;
idHTTP1.Get("урл",Captcha);
Captcha.SaveToFile(MyDir+"image.jpg");
Captcha.Destroy;

token:=recognize(MyDir+"image.jpg",apikeyedit.Text,false,false,false,0,0);

mpParams.Add("kapcha"+Token);

tmpList.Items.Text:=IdHTTP1.Post("урл",tmpParams);

tmpList.Items.SaveToFile(MyDir+"tpm.htm");

tmpParams.Free;

Button1.Enabled:=true;
end;

Первый раз все норм, на второй, вот тут ошибка- говорит что файл занят -
idHTTP1.Get("урл",Captcha);
Captcha.SaveToFile(MyDir+"image.jpg");
^^^^^^^^^^^^


 
Palladin ©   (2009-04-19 14:49) [1]

безобразный код... уволен.
а multi нужно все таки освободить. Пушкина на всех не хватит.


 
HF-Trade   (2009-04-19 14:51) [2]

пробовал я и multi.free нифига...


 
HF-Trade   (2009-04-19 14:53) [3]


> безобразный код... уволен.

Функция взята как есть с сайта антикапчи....


 
HF-Trade   (2009-04-19 14:57) [4]

вопрос снят))
Не везде free вставил))))


 
Anatoly Podgoretsky ©   (2009-04-19 17:53) [5]

> Palladin  (19.04.2009 14:49:01)  [1]

До увольнения.



Страницы: 1 вся ветка

Текущий архив: 2009.05.31;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.012 c
3-1221485321
Jeer
2008-09-15 17:28
2009.05.31
DBExpress.CleanupIntance;


2-1240209047
Destroyer
2009-04-20 10:30
2009.05.31
Microsoft SQL Server и Delphi


2-1239815188
Vov4ik
2009-04-15 21:06
2009.05.31
переход в конец текста в richedit


6-1203404629
stupido
2008-02-19 10:03
2009.05.31
Apache shared module


3-1221572163
Дмитрий Белькевич
2008-09-16 17:36
2009.05.31
Статистика выполнения запроса