Как можно динамически вызвать процедуру из библиотеки?

phantom76

Lotus team
25.02.2005
360
4
#1
появилась потребность вызвать динамически процедурку из библиотеки, напрямую вызвать не могу. т.к. нижние библиотеки скрыты, если бы была функция все понятно - через Execute...
а как быть в случае SUB ?
 

hosm

* so what *
18.05.2009
2 442
6
#2
а какая разница - ф-ция или процедура? Вы же вызываете код из либы, напишите в экзекьюте юз либы и вызов процедуры.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#4
напрямую вызвать не могу. т.к. нижние библиотеки скрыты, если бы была функция все понятно - через Execute
Растолкуй, что значит "скрытые" и чем они так закрыты, что из них нельзы вызвать функцию/процедуру?
Если функция объявлена приватной, то ее и Execute не вытянет.
А, если не объявлена, то и без Execute вызвать можно, главное знать ее систаксис.
 

phantom76

Lotus team
25.02.2005
360
4
#5
все просто, исходный код библиотек базового уровня скрыт дизайном, присутствует только в откомпилированном виде, далее идет 2-3 уровня библиотек с открытым кодом, из них соответственно пытаюсь запустить процедуры и функции или объявлять классы объявленные в них. Если я уже в своем коде пишу напрямую use имя_библиотеки, а в теле вызываю ее компонент, то при компиляции возникает ошибка, указывающая на библиотеки нижнего уровня, нет исходного кода.

Через Execute все получилось.
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#8
*надо запомнить* Знач надо скрывать выгрузкой кода в инклуды...
 

nvyush

Lotus team
22.04.2009
2 317
0
#9
Знач надо скрывать выгрузкой кода в инклуды.
Есть свои грабли. Насколько я помню, если есть библиотеки А, В, С, причём В и С включают А (Use A), то в библиотеке Е Use B + Use C будет вызывать ошибку для инклудной A (для неинклудной А всё норм). Хотя м.б. в 8.5.1 поведение изменилось, не проверял.
 

phantom76

Lotus team
25.02.2005
360
4
#10
*надо запомнить* Знач надо скрывать выгрузкой кода в инклуды...
А можно пояснить на примере?

Мой пример такой, есть библиотеки A,B,C , исходный код библиотеки А скрыт(удален) и базы, в библиотеке B используется А (use A) , в С - "use B". Далее, например пишу свою библиотеку , где делаю "use C", при сохранении появляется ошибка, указывающая на отсутствие классов библиотеки A при компиляции. Тоже самое, при внесении изменений в библиотеку С, сохранить их можно, при компиляции есть ошибки указывающие на объекты из А.
А вот например акцию использующую "С" мне создать удалось для формы, по-изучаю вопрос в дальнейшем, не все пока мне в нем ясно.