Date Редакция Категория comp Теги pascal / lazarus / curl

CurlPas это обертка над библиотекой libcurl, разработанная для Delphi / Kylix / FreePascal. libcurl, а значит и CurlPas, поддерживает передачу данных по протоколам HTTP, FTP, POP3, IMAP, SMTP и мн. др.

Проблема в том, что CurlPas не обновляется с 2005 года, и не учитывает изменений, произошедших за это время в компиляторе Free Pascal (FPC) и среде Lazarus. В результате при компиляции появляется много сообщений об ошибках, касающихся PChar, AnsiString, WideString и pointer.

Чтобы исправить эти ошибки и скомпилировать библиотеку в современной версии FPC нужно:

1. В файле curl_h.pas заменить строку 29

LIB_CURL = {$IFDEF LINUX} 'libcurl.so' {$ELSE} 'libcurl-3.dll' {$ENDIF};

следующей

LIB_CURL = {$IFDEF LINUX} 'libcurl.so' {$ELSE} 'libcurl.dll' {$ENDIF};

2. В файле ocurluse.inc в строках 6-9 вместо

{$H+}
{$IFDEF FPC}
  {$MODE OBJFPC}
{$ENDIF}

запишите (я просто переставил директиву H+ в конец)

{$IFDEF FPC}
  {$MODE OBJFPC}
{$ENDIF}
{$H+}

3. Откройте файл ocurlcb2.inc и замените строку 30 с такой

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_PROGRESSDATA, Self), CURLOPT_PROGRESSDATA);

на следующую:

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_PROGRESSDATA, pointer(Self)), CURLOPT_PROGRESSDATA);

а затем в том же файле ocurlcb2.inc в строке 93 замените

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_DEBUGDATA, Self), CURLOPT_DEBUGDATA);

на:

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_DEBUGDATA, pointer(Self)), CURLOPT_DEBUGDATA);

4. Откройте файл ocurlini.inc и замените строку 125 с такой:

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_PRIVATE, self), CURLOPT_PRIVATE);

на:

SetResultCode(curl_easy_setopt(fCurl, CURLOPT_PRIVATE, pointer(self)), CURLOPT_PRIVATE);

Теперь сохраните измененный файлы и скомпилируйте библиотеку.

Проверено на FPC 2.6.4 (март 2014 г.) под Windows 7.



Комментарии

comments powered by Disqus