OberonCore https://forum.oberoncore.ru/ |
|
Oml - МультиОберон для LLVM https://forum.oberoncore.ru/viewtopic.php?f=157&t=6426 |
Страница 3 из 3 |
Автор: | TheAthlete [ Воскресенье, 23 Октябрь, 2022 14:27 ] |
Заголовок сообщения: | Re: Oml - МультиОберон для LLVM |
Можете подсказать, есть ли возможность вызова внешник команд, например вызов curl с заданным урлом. Например, чтобы создать массив урлов и в цикле скачать с помощью curl файлы по этим URL. |
Автор: | Иван Денисов [ Воскресенье, 23 Октябрь, 2022 19:30 ] |
Заголовок сообщения: | Re: Oml - МультиОберон для LLVM |
Тут есть возможность делать привязки к внешним библиотекам, вот к примеру для 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`, однако получить результат выполнения нельзя в настоящий момент, но данные скачаются, как вы хотите. |
Автор: | Дмитрий Дагаев [ Понедельник, 24 Октябрь, 2022 09:44 ] |
Заголовок сообщения: | Re: Oml - МультиОберон для LLVM |
Все правильно Иван пишет про механизм привязки. Можно так сделать, вытащив функцию system. Реализацию более продвинутой версии с popen/pclose с печатью содержимого можно посмотреть в Runner.Execute. Для unix32/LLVM смотрите Runner__lue17, Api__lue. |
Страница 3 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |