Тут есть возможность делать привязки к внешним библиотекам, вот к примеру для Iconv, однако лучше бы вам Дмитрий Викторович тут сам подсказал, так как для Блэкбокса я привязки делал неоднократно, в вот для мультиоберона тут очевидно немного отличается принцип. Как минимум в заголовке отсутствует название библиотеки. В Блэкбоксе обычно после названия модуля идёт название библиотеки, а тут нету.
Код:
MODULE HostLinIconv;
IMPORT SYSTEM, Libc := HostLinLibc;
TYPE
PtrVoid = Libc.PtrVoid;
PtrSTR* = Libc.PtrSTR;
PtrLSTR* = POINTER TO ARRAY [untagged] OF CHAR;
size_t* = Libc.size_t;
iconv_t* = PtrVoid;
PROCEDURE [code] iconv_open* (tocode, fromcode: PtrSTR): iconv_t
'iconv_open(tocode, fromcode)';
PROCEDURE [code] iconv_close* (cd: iconv_t): INTEGER
'iconv_close(cd)';
PROCEDURE [code] iconv* (cd: iconv_t; VAR [nil] inbuf: PtrSTR; VAR inbytesleft: size_t; VAR [nil] outbuf: PtrSTR; VAR outbytesleft: size_t): size_t
'iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)';
PROCEDURE [code] iconv_encode* (cd: iconv_t; VAR [nil] inbuf: PtrLSTR; VAR inbytesleft: size_t; VAR [nil] outbuf: PtrSTR; VAR outbytesleft: size_t): size_t
'iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)';
PROCEDURE [code] iconv_decode* (cd: iconv_t; VAR [nil] inbuf: PtrSTR; VAR inbytesleft: size_t; VAR [nil] outbuf: PtrLSTR; VAR outbytesleft: size_t): size_t
'iconv(cd, inbuf, inbytesleft, outbuf, outbytesleft)';
END HostLinIconv.
В Блэкбоксе, к слову, вызов внешних команд происходит через `Dialog.RunExternal`, однако получить результат выполнения нельзя в настоящий момент, но данные скачаются, как вы хотите.