Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
7:08:2007, 10:10
|
|
очень злой модератор Группа: Lotus team Сообщений: 3 221 Регистрация: 7:08:2006 Из: Украина, Киев Пользователь №: 5 807 Репутация: 54
|
Функция Execute шикарная вещь при правильном применении.
Вы только вчитайтесь в описание Цитата LotusScript considers text a separate script, compiling and executing it as a temporary module that's unloaded as soon as execution finishes. компиляции и запуска и выгрузки целых динамических библиотек Синтаксис: Execute ( text ) где text - собственно и есть запускаеммый скрипт попробуйте запустить этот код Ну чтож теперь попробуем более сложный код, в котором сдержиться более одной строки Имейте в виду что символы перехода строки используються для разделения строк в переменной strCode Как видите оба примера делают одно и тоже - показывают окно с соощением "Это динамическая библиотека". Я думаю теперь суть функции Execute должна быть Вам ясна. Далее попытаемся продемонстрировать Вам возможность использования этой функции в приложениях Работа с динамическими классами В ниже приведённом примере некоторые переменные и процедуры загружены из другого модуля Этот динамический код загружает библиотеку ArrayManager и экземпляр класса ArrayManager. Фишка в том что в 4й строке мы динамически подгружаем модуль. Таким образом в режиме runtime мы можем программно решать - подгружать модули или нет. Эта техника называеться Динамическая загрузка классов ( Dynamic Class Loading ). Этот метод хорошо использовать с точки зрения оптимизации - мы подгружаем только те модули которые будем использовать, ничего лишнего. Конечо же эта техника не новая. Я лично пользуюсь ею(поисковая система). Можете прочитать про эту технику ]]>тут]]> Теперь я думаю пора привести более сложный пример Теперь как Вы видите - все динамическое: подгружаеммый модуль, имя запускаеммой функции, параметр для функции. Прошу обратить внимание на две верхние строки. они позволяют нам обьединять переменные для статического и динамического кода. ВАЖНО это будет работать только с глобальными декларациями, имено потому strReturnVal задекларированно в самом верху! Канечно, приведённые выше примеры слишком просты, но я думаю суть фунции Execute у меня получилось Вам передать. от себя отмечу что интересным есть то что возвратит нам фунция Execute Return value Цитата The Execute function returns one of the following values: The return code of an End statement, if one was executed. Zero (0), if no End statement was executed, or if the executed End statement had no return value. как видите - код который идет за End - или 0, если в код не был включен End, или End ничего не вернул. Пример Как видим в данном динамическом коде присутствуют End -2 и End -3. В зависимости от значения retcode наш MessageBox выведет нам одну из надписей про позитив или негатив ]]>Вольный перевод отсюда]]> Сообщение отредактировал Morpheus - 7:08:2007, 10:11 |
|
Сообщение
#1
|
|
![]() |
|
|
7:09:2007, 14:46
|
|
Продвинутый Группа: Lotus team Сообщений: 217 Регистрация: 27:10:2006 Из: Киев Пользователь №: 7 417 Репутация: 8
|
Мало того, на Execute можно построить настраиваемое "слабое" взаимодействие между двумя базами. База А шлёт базе Б письмо с кодом, который надо выполнить в базе Б. В базе Б агент отлавливает пришедшее письмо и выполняет пришедший код. всё красиво, естественно и прозрачно.
|
|
Сообщение
#2
|
|
![]() |
|
Текстовая версия | Сейчас: 2:12:2008 - 20:51 |