|
Проход по функциям
|
|||
---|---|---|---|
#18+
Имеется невизуальный объект, в котором ряд функций. Можно ли в скрипте в цикле пройти по всем имеющимся в нем функциям, запуская их? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2009, 14:28 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
AIS, В принципе - есть TriggerEvent, где название ф-ии или ивента можно писать в виде строки. Думайте, как это использовать. Непонятно, зачем это вообще может понадобиться. Кроме того - что делать с параметрами. Думаю, что Вам придется в каждом объекте вести мини реестр с описанием Ваших ф-ий, их параметрами и значениями по умолчанию, например во внутреннем датастор. Тогда это понятно как сделать. Вопрос целесообразности пока так и не ясен :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2009, 11:06 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
Через pbni получить список функций или распарсить исходник и потом поочередно запускать Бред... Дизайн хромает ----------------------------------------------------------------------------- Главная деталь любой машины - голова ее владельца ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2009, 11:27 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
Спасибо за советы. Буду пробовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2009, 11:48 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
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. Боюсь, что без бубна запустить произвольную функцию не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2009, 15:38 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
Получить список методов - как написали выше, через ClassDefinition объекта. Вызвать же метод можно только написав расширение PBNI на C++. Без PBNI можно вызывать только глобальные ф-и через DW.Describe("Evaluate...") с типами данных аргументов поддерживаемыми в выражениях DW. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2009, 17:11 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
PL99 , спасибо за совет. "Пробежать" по функциям объекта практически получилось. Вообщем, так как хотел. А вот запустить - это пока вопрос. :( Пока ещё есть желание буду искать решение средствами РВ. andy753 , Через TriggerEvent - это выход, но с аргументами не понятно. Как их передать? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.09.2009, 03:00 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
AISЧерез TriggerEvent - это выход, но с аргументами не понятно. Как их передать? TriggerEvent не поможет, через него нельзя вызывать функции - только события. Кроме того, аргументы через TriggerEvent нельзя передать(а также вернуть результат), кроме как в Message, и если событие объявлено с аргументами, то они будут Null при вызове. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2009, 04:03 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
AIS andy753 , Через TriggerEvent - это выход, но с аргументами не понятно. Как их передать?Можно попробовать некий обходной путь, позволяющий передать строковый аргумент в событие , но он, наверняка, потребует переписывания кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2009, 10:19 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
Просто мысль, не проверял. Если то, что описано вот здесь http://grebenyukov.narod.ru/?/pb.htm#42 работает не только на 6.5, но и на Вашей текущей версии РВ, то получив вышеподсказанным PL99 способом список функций, создать из кода библиотеку, в нее сгененрить глобальную функцию, в которой прописать необходимые вызовы со всеми аргументами и прочим, и, подключив библиотеку через SetLibraryList, выполнить эту функцию... Кстати, Вы так и не ответили на вопрос:andy753AIS, ... Непонятно, зачем это вообще может понадобиться. ... ------------ С уважением, IKAR IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо .................................. Винтовка.ру .................................. Портал русскоязычной группы пользователей Sybase ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2009, 11:49 |
|
Проход по функциям
|
|||
---|---|---|---|
#18+
Ikar... Кстати, Вы так и не ответили на вопрос:andy753AIS, ... Непонятно, зачем это вообще может понадобиться. ... Есть задача проведения массива тестов. Каждый тест - это функция, возращающая результат определенного теста. Если тест негативный, то идет редактирование параметров и снова запускается процесс тестирования с начала. И так пока все тесты за один "проход" не дадут положительный результат. Вот мне и кажется, что это было бы красиво сделать в цикле и без жесткой привязки к названиям функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.09.2009, 21:34 |
|
|
start [/forum/topic.php?fid=15&fpage=31&tid=1336173]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 326ms |
total: | 480ms |
0 / 0 |