OberonCore https://forum.oberoncore.ru/ |
|
проверить по имени, что процедура без параметров? https://forum.oberoncore.ru/viewtopic.php?f=2&t=5602 |
Страница 1 из 1 |
Автор: | Info21 [ Пятница, 15 Январь, 2016 21:20 ] |
Заголовок сообщения: | проверить по имени, что процедура без параметров? |
Коллеги, с окончательно Наступившим! Вопрос: Есть полное имя процедуры (Модуль.Процедура) в виде цепочки литер. Как убедиться, что это процедура без параметров? Заранее спасибо. |
Автор: | Пётр Кушнир [ Пятница, 15 Январь, 2016 22:03 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Из модуля 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 это глобальная переменная отвечающая за хранение результата синтаксического разбора строчки с командой (они там ищут скобки, константы и точки с запятой) |
Автор: | Info21 [ Пятница, 15 Январь, 2016 22:13 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Огромное спасибо! Стормозил насчёт интерпретатора. |
Автор: | Info21 [ Пятница, 15 Январь, 2016 22:19 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Стоп. Это 1.6? Со школьниками я все еще юзаю 1.5, там такого нет. Что ли пора переходить. |
Автор: | Пётр Кушнир [ Пятница, 15 Январь, 2016 23:20 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Исходник StdInterpreter имеет отметки об изменениях от 2007-го года, не уверен, что тогда был 1.6. |
Автор: | Пётр Кушнир [ Пятница, 15 Январь, 2016 23:21 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
В архиве школьной сборки такой файл имеется. |
Автор: | Пётр Кушнир [ Суббота, 16 Январь, 2016 01:20 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Вообще, StdInterpreter это скрытая реализация Dialog.Call, если я правильно помню. |
Автор: | Иван Денисов [ Суббота, 16 Январь, 2016 06:14 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Info21 писал(а): Стоп. Это 1.6? Со школьниками я все еще юзаю 1.5, там такого нет. Что ли пора переходить. Фёдор Васильевич, поглядите последнюю сборку Центра: viewtopic.php?f=127&t=5600#p94446 Серьезных изменений до финального релиза не предвидится. Все возможности по локализации и юникодизации применены. Если вы заметите в процессе перехода какой-то баг или потребуется что-то изменить, сейчас на этапе альфа версии возможно добавить что-то важное, а не только исправления ошибок. |
Автор: | Info21 [ Понедельник, 18 Январь, 2016 00:20 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Пётр Кушнир писал(а): В архиве школьной сборки такой файл имеется. Файл-то имеется, да в нём нет, например, GetReturnType.Всё-таки 1.6 и старше. |
Автор: | Info21 [ Понедельник, 18 Январь, 2016 00:22 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Иван Денисов писал(а): последнюю сборку Центра: Спасибо.viewtopic.php?f=127&t=5600#p94446 Серьезных изменений до финального релиза не предвидится. Все возможности по локализации и юникодизации применены. Если вы заметите в процессе перехода какой-то баг или потребуется что-то изменить, сейчас на этапе альфа версии возможно добавить что-то важное, а не только исправления ошибок. Вы подольше держите её альфой, а то у меня быстро не получится |
Автор: | Илья Ермаков [ Вторник, 19 Январь, 2016 15:54 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
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; |
Автор: | Info21 [ Среда, 20 Январь, 2016 01:49 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Большое спасибо, будем проверять. |
Автор: | Иван Денисов [ Среда, 27 Январь, 2016 19:19 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Info21 писал(а): Вы подольше держите её альфой, а то у меня быстро не получится Думаю, что не больше пары недель в альфа версии осталось. |
Автор: | Info21 [ Четверг, 28 Январь, 2016 07:38 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Илья Ермаков писал(а): Код: PROCEDURE CheckProcWithoutPar (IN name: ARRAY OF CHAR): BOOLEAN; ... Большое спасибо, работает, и с другими сигнатурами тоже. |
Автор: | Info21 [ Четверг, 28 Январь, 2016 07:41 ] |
Заголовок сообщения: | Re: проверить по имени, что процедура без параметров? |
Иван Денисов писал(а): Info21 писал(а): Вы подольше держите её альфой, а то у меня быстро не получится Думаю, что не больше пары недель в альфа версии осталось. Значит, такая судьба. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |