powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проход по функциям
12 сообщений из 12, страница 1 из 1
Проход по функциям
    #36166231
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется невизуальный объект, в котором ряд функций.
Можно ли в скрипте в цикле пройти по всем имеющимся в нем функциям, запуская их?
...
Рейтинг: 0 / 0
Проход по функциям
    #36167551
andy753
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS,

В принципе - есть TriggerEvent, где название ф-ии или ивента можно писать в виде строки. Думайте, как это использовать. Непонятно, зачем это вообще может понадобиться. Кроме того - что делать с параметрами. Думаю, что Вам придется в каждом объекте вести мини реестр с описанием Ваших ф-ий, их параметрами и значениями по умолчанию, например во внутреннем датастор. Тогда это понятно как сделать. Вопрос целесообразности пока так и не ясен :)
...
Рейтинг: 0 / 0
Проход по функциям
    #36167608
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через pbni получить список функций или распарсить исходник и потом поочередно запускать
Бред...
Дизайн хромает
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Проход по функциям
    #36167675
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за советы. Буду пробовать.
...
Рейтинг: 0 / 0
Проход по функциям
    #36170868
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISИмеется невизуальный объект, в котором ряд функций.
Можно ли в скрипте в цикле пройти по всем имеющимся в нем функциям, запуская их?Есть такое понятие - интроспекция. В эхотаге для этого существует объект ClassDefinition
PowerBuilder Help ClassDefinition object
A ClassDefinition object is a PowerBuilder object that provides information about the class definition of a PowerBuilder object. You can examine a class in a PowerBuilder library or the class associated with an instantiated object.
All the properties are read-only. You cannot change the class definition via the ClassDefinition object. The ClassDefinition object has no events.
The ClassDefinition object lets you check:

· The name of the class
· The library the class was loaded from
· The class definition of its ancestor, if any
· The class definition of its parent or container object, if any
· Whether the class is autoinstantiated
· Whether the class is a system class (defined by PowerBuilder) or a user-defined object (defined in a PowerBuilder PBL)
· The classes the object contains, such as the controls contained in a window

· The variables and scripts defined in the class

Class names are always reported as lowercase, as you see them in the Browser.
...

А в этом объекте есть функция
автор FindMatchingFunction PowerScript function
Description

Finds out what function in a class matches a specified signature. The signature is a combination of a script name and an argument list.

Controls

ClassDefinition objects

Syntax

classdefobject.FindMatchingFunction ( scriptname, argumentlist )

Argument Description
classdefobject The name of the ClassDefinition object describing the class in which you want to find a function
scriptname A string whose value is the name of the function
argumentlist An unbounded array of strings whose values are the data types of the function arguments. If the variable is passed by reference, the string must include "ref" before the data type. If the variable is an array, you must include array brackets after the data typeThe format is:{ ref } datatype { [ ] }
Return value

ScriptDefinition. Returns an object instance with information about the matching function. If no matching function is found, FindMatchingFunction returns NULL. If any argument is NULL, it also returns NULL.

Usage

In searching for the function, PowerBuilder examines the collapsed inheritance hierarchy. The found function may be defined in the current object or in any of its ancestors.
Arguments passed by reference To find a function with an argument that is passed by reference, you must specify the "ref" keyword. If you have a VariableDefinition object for a function argument, check the CallingConvention argument to determine if the argument is passed by reference.
In documentation for PowerBuilder functions, arguments passed by reference are described as a variable, rather than simply a value. The PowerBuilder Browser does not report which arguments are passed by reference.

Боюсь, что без бубна запустить произвольную функцию не получится.
...
Рейтинг: 0 / 0
Проход по функциям
    #36171131
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получить список методов - как написали выше, через ClassDefinition объекта.
Вызвать же метод можно только написав расширение PBNI на C++.

Без PBNI можно вызывать только глобальные ф-и через DW.Describe("Evaluate...") с типами данных аргументов поддерживаемыми в выражениях DW.
...
Рейтинг: 0 / 0
Проход по функциям
    #36171697
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PL99 ,
спасибо за совет. "Пробежать" по функциям объекта практически получилось. Вообщем, так как хотел. А вот запустить - это пока вопрос. :(
Пока ещё есть желание буду искать решение средствами РВ.

andy753 ,
Через TriggerEvent - это выход, но с аргументами не понятно. Как их передать?
...
Рейтинг: 0 / 0
Проход по функциям
    #36173823
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISЧерез TriggerEvent - это выход, но с аргументами не понятно. Как их передать?
TriggerEvent не поможет, через него нельзя вызывать функции - только события. Кроме того, аргументы через TriggerEvent нельзя передать(а также вернуть результат), кроме как в Message, и если событие объявлено с аргументами, то они будут Null при вызове.
...
Рейтинг: 0 / 0
Проход по функциям
    #36174072
Фотография PL99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AIS andy753 ,
Через TriggerEvent - это выход, но с аргументами не понятно. Как их передать?Можно попробовать некий обходной путь, позволяющий передать строковый аргумент в событие , но он, наверняка, потребует переписывания кода.
...
Рейтинг: 0 / 0
Проход по функциям
    #36174305
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто мысль, не проверял.

Если то, что описано вот здесь http://grebenyukov.narod.ru/?/pb.htm#42 работает не только на 6.5, но и на Вашей текущей версии РВ, то получив вышеподсказанным PL99 способом список функций, создать из кода библиотеку, в нее сгененрить глобальную функцию, в которой прописать необходимые вызовы со всеми аргументами и прочим, и, подключив библиотеку через SetLibraryList, выполнить эту функцию...

Кстати, Вы так и не ответили на вопрос:andy753AIS,
...
Непонятно, зачем это вообще может понадобиться.
...

------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
.................................. Винтовка.ру ..................................
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Проход по функциям
    #36175698
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikar...
Кстати, Вы так и не ответили на вопрос:andy753AIS,
...
Непонятно, зачем это вообще может понадобиться.
...
Есть задача проведения массива тестов. Каждый тест - это функция, возращающая результат определенного теста. Если тест негативный, то идет редактирование параметров и снова запускается процесс тестирования с начала. И так пока все тесты за один "проход" не дадут положительный результат.
Вот мне и кажется, что это было бы красиво сделать в цикле и без жесткой привязки к названиям функций.
...
Рейтинг: 0 / 0
Проход по функциям
    #36175857
edmikeca
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 AIS

Unit test?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Проход по функциям
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]