OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 27 Сентябрь, 2021 09:36

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




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 18 Июль, 2021 20:28 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1346
В этом есть какой-то сакральный смысл? Например, при этом обрезается чтение (из редактора или с терминала в режиме приложения под Windows) вот такой команды:

Код:
Модуль.Команда первыйАргумент ; второйАргумент ~


Вопреки ожидениям, ";" и "второйАргумент" не передаются в команду. Непохоже, чтобы это было описано в документации, для меня выглядит пока что как ошибка.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 19 Июль, 2021 08:01 
Аватара пользователя

Зарегистрирован: Пятница, 11 Май, 2007 21:57
Сообщения: 1477
Откуда: Украина, Киев
Разделитель аргументов - любой пробельный символ. Точка с запятой, насколько помню, нигде в качестве такового разделителя не описана


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 20 Июль, 2021 22:44 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1346
Речь идёт про разделитель команд, а не аргументов. Commands.Call может запустить сразу несколько команд:

Код:
Activate a string of commands, including their parameters.
   The string is parsed from left to right and Activate is called for every command.
   Parsing stops at the end of the string, or when Activate returns an error.
   The flags are applied to every command, i.e., for sequential execution,
   use the Wait flag (the caller waits until all commands return).
   Syntax:
      cmds = [mode " " ] cmd {";" cmd} .
      mode = "PAR" | "SEQ" .
      cmd = mod ["." proc] [" " params] .
      params = {<any character except ";">} .

Но именно она вызывается по Ctrl-Enter из текстового редактора, когда нужно выполнить команду. Насколько я понял, сначала вырезается
кусок до „~“ и передаётся в Call. И уже внутри Call нас ждёт тот сюрприз, что он снова бьёт команду на части, на этот раз по вхождениям „;“.

И вот эта последняя особенность кажется странной.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 24 Июль, 2021 22:00 

Зарегистрирован: Пятница, 11 Январь, 2019 19:26
Сообщения: 248
Откуда: Russia
нет ничего странного: "~" признак конца команды в тексте при разборе. А Commands Call это просто процедура, которая принимает уже готовую команду, (начинающуюся с PAR|SEQ и заканчивающуюся ~) . Поэтому логично, что внутри строки в качестве разделителя изпользуется символ отличный от ~ . Иначе её невозможно будет извлечь из текста


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 25 Июль, 2021 13:55 

Зарегистрирован: Понедельник, 11 Сентябрь, 2017 13:23
Сообщения: 1346
Логику понять можно, но странным оно от этого быть не перестаёт, System.DoCommands делает почти то же самое, а при этом вполне хватает одного разделителя, не говоря уж о других подобных языках. Т.е. слишком жирным выглядит использовать целых два разных разделителя ради такой мелочи. Но если бы это хотя бы было документировано, то было бы ещё куда ни шло. Пока выглядит, что сделали и забыли. Тогда вопрос такой (понятно, что сложный): кто-нибудь этим пользуется в A2?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

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


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

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


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

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