B4rr4cudaДа не, там есть возможность задать функцию закачки. Проблема решена(все равно спасибо за попытку помочь), там будет примерно такой код:
- Код: Выделить всё
{$mode objfpc}
{$H+}
program teststream;
uses classes,libcurl,unixtype;
type Ptextfile= ^textfile;
Function DoWrite(Ptr : Pointer; Size : size_t; nmemb: size_t; Data : Pointer) : size_t;cdecl;
begin
Result:=TStream(Data).Write(Ptr^,Size*nmemb);
end;
Function DoProgress(text: Ptextfile; dltotal:double; dlnow:double; ultotal:double; ulnow:double):longint;cdecl;
Begin
writeln(dltotal,' ',dlnow);
End;
Var
f : TFileStream;
test:textfile;
URL : Pchar = 'http://www.freepascal.org';
hCurl : pCurl;
begin
F:=TFileStream.Create('fpc.html',fmCreate);
assign(test,'test.txt');
rewrite(test);
Try
hCurl:= curl_easy_init;
if Assigned(hCurl) then
begin
curl_easy_setopt(hCurl,CURLOPT_VERBOSE, [True]);
curl_easy_setopt(hCurl,CURLOPT_URL,[URL]);
curl_easy_setopt(hCurl,CURLOPT_WRITEFUNCTION,[@DoWrite]);
curl_easy_setopt(hCurl,CURLOPT_WRITEDATA,[Pointer(F)]);
curl_easy_setopt(hCurl,CURLOPT_NOPROGRESS,[0]);
curl_easy_setopt(hCurl,CURLOPT_PROGRESSFUNCTION,[@DoProgress]);
curl_easy_setopt(hCurl,CURLOPT_PROGRESSDATA,[@test]);
curl_easy_perform(hCurl);
curl_easy_cleanup(hCurl);
end;
Finally
F.Free;
close(test);
end;
end.
Вместо Ptextfile может выступать любой поинтер, этот осталься от варианта записи лога в файл. Только раньше этот код ничего на экран не выводил, но после переустановки fpc все запахало. До сих пор не понимаю почему.