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