OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 14 Ноябрь, 2019 15:00

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




Начать новую тему Ответить на тему  [ Сообщений: 15 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 15 Январь, 2016 21:20 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Коллеги, с окончательно Наступившим!

Вопрос:

Есть полное имя процедуры (Модуль.Процедура) в виде цепочки литер.

Как убедиться, что это процедура без параметров?

Заранее спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Январь, 2016 22:03 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
Из модуля StdInterpreter можно вычленить кусок, отвечающий за анализ метаинформации о процедуре:
Код:
PROCEDURE CallProc (IN mod, proc: ARRAY OF CHAR);
         VAR i, t: Meta.Item; ok: BOOLEAN;
      BEGIN
         ok := FALSE;
         Meta.Lookup(mod, i);
         IF i.obj = Meta.modObj THEN
            i.Lookup(proc, i);
            IF i.obj = Meta.procObj THEN
               i.GetReturnType(t);
               IF (t.typ = 0) & (i.NumParam() = numPar) THEN
                  i.ParamCallVal(par, t, ok)
               ELSE ok := FALSE
               END;
               IF ~ok THEN
                  Error(incompParList, "#System:IncompatibleParList", mod, proc)
               END
            ELSE
               Error(Kernel.commNotFound, "#System:CommandNotFoundIn", proc, mod)
            END
         ELSE
            ShowLoaderResult(mod)
         END
      END CallProc;


numPar это глобальная переменная отвечающая за хранение результата синтаксического разбора строчки с командой (они там ищут скобки, константы и точки с запятой)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Январь, 2016 22:13 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Огромное спасибо!

Стормозил насчёт интерпретатора.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Январь, 2016 22:19 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Стоп. Это 1.6?

Со школьниками я все еще юзаю 1.5, там такого нет.
Что ли пора переходить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Январь, 2016 23:20 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
Исходник StdInterpreter имеет отметки об изменениях от 2007-го года, не уверен, что тогда был 1.6.


Последний раз редактировалось Пётр Кушнир Суббота, 16 Январь, 2016 01:19, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 15 Январь, 2016 23:21 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
В архиве школьной сборки такой файл имеется.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Январь, 2016 01:20 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2625
Откуда: Россия, Ярославль
Вообще, StdInterpreter это скрытая реализация Dialog.Call, если я правильно помню.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Январь, 2016 06:14 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2430
Info21 писал(а):
Стоп. Это 1.6?

Со школьниками я все еще юзаю 1.5, там такого нет.
Что ли пора переходить.

Фёдор Васильевич, поглядите последнюю сборку Центра:
viewtopic.php?f=127&t=5600#p94446
Серьезных изменений до финального релиза не предвидится. Все возможности по локализации и юникодизации применены.
Если вы заметите в процессе перехода какой-то баг или потребуется что-то изменить, сейчас на этапе альфа версии возможно добавить что-то важное, а не только исправления ошибок.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2016 00:20 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Пётр Кушнир писал(а):
В архиве школьной сборки такой файл имеется.
Файл-то имеется, да в нём нет, например, GetReturnType.

Всё-таки 1.6 и старше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 18 Январь, 2016 00:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Иван Денисов писал(а):
последнюю сборку Центра:
viewtopic.php?f=127&t=5600#p94446
Серьезных изменений до финального релиза не предвидится. Все возможности по локализации и юникодизации применены.
Если вы заметите в процессе перехода какой-то баг или потребуется что-то изменить, сейчас на этапе альфа версии возможно добавить что-то важное, а не только исправления ошибок.
Спасибо.
Вы подольше держите её альфой, а то у меня быстро не получится :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 19 Январь, 2016 15:54 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9154
Откуда: Россия, Орёл
Info21 писал(а):
Есть полное имя процедуры (Модуль.Процедура) в виде цепочки литер.

Как убедиться, что это процедура без параметров?



Код:
PROCEDURE CheckProcWithoutPar (IN name: ARRAY OF CHAR): BOOLEAN;
   VAR val: RECORD (Meta.Value) proc: PROCEDURE END;
      it : Meta.Item;
      ok: BOOLEAN;
BEGIN
   ok := FALSE;
   Meta.LookupPath(name, it);
   IF it.Valid() THEN
      it.GetVal(val, ok)
   END;
RETURN ok
END CheckProcWithoutPar;


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Январь, 2016 01:49 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Большое спасибо, будем проверять.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 27 Январь, 2016 19:19 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2430
Info21 писал(а):
Вы подольше держите её альфой, а то у меня быстро не получится :)

Думаю, что не больше пары недель в альфа версии осталось.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2016 07:38 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Илья Ермаков писал(а):
Код:
PROCEDURE CheckProcWithoutPar (IN name: ARRAY OF CHAR): BOOLEAN;
...

Большое спасибо, работает, и с другими сигнатурами тоже.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 28 Январь, 2016 07:41 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Иван Денисов писал(а):
Info21 писал(а):
Вы подольше держите её альфой, а то у меня быстро не получится :)

Думаю, что не больше пары недель в альфа версии осталось.

Значит, такая судьба.


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

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


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

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


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

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