OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 29 Март, 2024 02:54

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
 Заголовок сообщения: Re: Oml - МультиОберон для LLVM
СообщениеДобавлено: Воскресенье, 23 Октябрь, 2022 14:27 

Зарегистрирован: Воскресенье, 23 Октябрь, 2022 12:23
Сообщения: 3
Можете подсказать, есть ли возможность вызова внешник команд, например вызов curl с заданным урлом. Например, чтобы создать массив урлов и в цикле скачать с помощью curl файлы по этим URL.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oml - МультиОберон для LLVM
СообщениеДобавлено: Воскресенье, 23 Октябрь, 2022 19:30 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Тут есть возможность делать привязки к внешним библиотекам, вот к примеру для 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`, однако получить результат выполнения нельзя в настоящий момент, но данные скачаются, как вы хотите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Oml - МультиОберон для LLVM
СообщениеДобавлено: Понедельник, 24 Октябрь, 2022 09:44 

Зарегистрирован: Вторник, 01 Март, 2011 09:34
Сообщения: 583
Откуда: Москва
Все правильно Иван пишет про механизм привязки. Можно так сделать, вытащив функцию system.
Реализацию более продвинутой версии с popen/pclose с печатью содержимого можно посмотреть в Runner.Execute. Для unix32/LLVM смотрите Runner__lue17, Api__lue.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB