| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Работа со скриптами |
| Автор: NoX 17.9.2003, 18:47 |
| Нужно сделать так чтобы программа могла выполнять макросы на VBScript (or JavaScript, etc.), а-ля MS Word. Можно конечно скинуть скрипт на диск и shell, но тут проблемка: нужно чтобы в скрипте были доступны переменные программы. Может кто знает какие компоненты для выполнения скриптов ?? Подойдет также ActiveX или COM. |
| Автор: Vit 17.9.2003, 20:16 |
| RaLib и JVCL содержат компонент для выполнения скнриптов на языке Дельфи - всё очень круто, в макросах можно пользоваться практически всеми конструкциями Дельфи - от процедур, до создания форм... |
| Автор: Monty 17.9.2003, 23:42 | ||
Vit, а можно поподробние? И если можно с не большим примером использрвания |
| Автор: Monty 18.9.2003, 00:51 | ||||
Все, нашел Дает такие возможности, я просто восхищен ....... я восхищен до сих пор ........ |
| Автор: Monty 18.9.2003, 01:24 |
| Ого! Да с таким компонетом я ЛЕГКО реализую в программе работу с плагинами! Ведь он еще умеет вызывать функции из ДЛЛ ..... плюсь еще любой может для своего плагина создать форму со всем нужным на ней Как все выглядет хорошо, а подводные камни есть? ..... Не хочется их обнаружить уже в готовом продукте |
| Автор: Vit 18.9.2003, 03:01 |
| Подводные камни есть: 1) Размер exe нехилый, так как ты не знаешь какие функции будут использованы то компилируется практически вся VCL+RTL, так что в максимальном виде бинарник тянет почти на 3 метра 2) Осторожней с подключением библиотек, если добавишь модули для работы с базами данных, то программа будет требовать присуттствия BDE даже если твои скрипты и не используют базы данных 3) Работа скрипта на много порядков медленнее чем работа откомпилированной программы, и памяти жрёт тоже много 4) Следует помнить что скрипт хоть и выглядит точным подобием языка Дельфи на самом деле им не является, есть коренные отличия - на самом деле скрипт поддерживает только 2 типа! Вариант и Указатель на объект, поэтому нормальная работа с типами и классами невозможна, хотя авторы скрипта и попытались максимально приблизить синтаксис, но как ты понимаешь статическое выделение памяти здесь невозможно, а объектное ориентирование просто не реализовано... Если хочешь я могу прислать для тебя для примера NotePad полностью написанный на этом скрипте. |
| Автор: Monty 18.9.2003, 03:08 |
| Спасибо Vit, ненадо, демо понятное и все возможности в нем указали ..... там еще и формы поддерживуются ...... восхищаюсь до сих пор В своей программе я много использовал дополнительно, поэтому она и весит 2Мб, надеюсь что от этого Интерпритатора в весе не очень прибавит PS ну надо же .... а пока буду эксперементировать ...... |
| Автор: Monty 18.9.2003, 03:24 |
| Vit у меня вопрос, а можно ли из скрипта использовать переменные и функции/процедуры уже существующей программы? PS Размер программы таков: Было: 2Мb - UPX = 0.7Mb Стало: 3.5Mb - UPX = 1Mb .... я это могу простить |
| Автор: Vit 18.9.2003, 03:28 | ||
Можно, я прикручивал, да там по-моему и демо есть, и просто в исходники их модулей зайди, посмотри как они сами регистрируют функции например из модуля SysUtils - и ты так сможешь, правда на этапе компиляции ты уже должен знать какие функции разрешишь использовать скрипту... |
| Автор: Vit 18.9.2003, 03:28 | ||
Меня эта возможность самого поразила, действительно сделано круто! |
| Автор: NoX 18.9.2003, 19:05 |
| Ребята а где эти либа Взять А |
| Автор: Monty 18.9.2003, 20:31 |
| NoX вроде вот ХамеПага ихняя Vit проблема, стал писать сам и не выходит |
| Автор: Monty 18.9.2003, 20:41 | ||
Стоит мне пожаловаться на проблему, как тут же её решаю |
| Автор: Monty 20.9.2003, 00:56 |
| Vit, а как завершить работу скрипта ... можно сказать надо завершить принудительно, чтоб не сопротивлялся .............. там как бы нет оператора Terminate т.е. такое есть: JvInterpreterProgram.Run, а вот что- то такого нет: JvInterpreterProgram.Terminate ...... так как можно завершить работу скрипта? |
| Автор: Vit 20.9.2003, 01:18 |
| Halt, Exit не пробовал? |
| Автор: Monty 20.9.2003, 03:32 | ||||
Vit не совсем так
JvInterpreterProgram.Free - не красиво получается, выскакивает окно с ошибкой ......... и больше как незнаю ....... получается JvInterpreterProgram.Run - это машина без тормозов |
| Автор: Vit 20.9.2003, 06:20 |
| Понял, не знаю, надо в исходники лезть... Попробуй просто текст скрипта убить, может поможет... |
| Автор: Monty 22.9.2003, 19:23 | ||||||
| У меня еще ряд вопросов Ну ни как не получется создать свой как бы виртуальный модуль, допустим я копирую модуль JvInterpreter_System.pas под другим названием JvInterpreter_MyFunctions.pas, убираю от туда все, но оставляю подходящии функции по количесту аргументов, например, было:
стало:
потом пишу:
Но результата нет Добавленно: И ни чего не получается ... и класс добавить не могу .......... и у себя в проектe прописываю JvInterpreter_MyFunctions .... и в том коде что выполняется интерпритатором |
| Автор: Vit 23.9.2003, 06:17 |
| Посмотри что они там пишут в секции Initialization модулей, может там собака порылась, вообще возьми их функцию и тщательно по всему их коду поищи её название, может оно где фигурирует и объявление функции недостаточно |
| Автор: Monty 23.9.2003, 19:40 | ||||
Vit
Я же видел это, а свой модуль не прописал Теперь все работает ...... спасибо |
| Автор: dm9 25.9.2003, 16:45 | ||||||||
| Привет! Я тоже заинтересовался интерпретатором
Memo1 содержит:
Выдаётся: function 'main' undefined То же самое:
Memo1:
Теперь: Undeclarate identifer 'MyPlus'... Что я делаю не так? |
| Автор: Monty 25.9.2003, 23:46 |
| Я такое же получил когда скачал JEDI VCL 2.10 ......... там интерпритатор у меня не работает и выдает странные ошибки !!! ........... НО JEDI VCL 2 BETA работает отлично не смотря на то что она бэта ........ у тебя все верно ..... и это из демо PS я сначло думал что это я криво поставил PPS а кто может им написать насчет этого бага? я энглиш не знаю |
| Автор: dm9 25.9.2003, 23:59 |
| Спасибо, скачаю 2.0 beta. Теперь ещё вопрос: а нету ли справочки по компоненту? По этому интерпретатору и по некоторым другим компонентам ни в одном hlp я ничего не нашёл... Что, только по демкам изучать? |
| Автор: Monty 26.9.2003, 00:07 | ||
Ага ... по демкам и методом тыка |
| Автор: dm9 28.9.2003, 02:51 | ||||
| Вроде, работает У меня появился новый вопрос: как (если это возможно) использовать внутри скрипта подпрограммы, написанные в этом же скрипте? Так не работает:
А так вообще ошибку выдаёт
|
| Автор: Monty 29.9.2003, 09:02 | ||
dm9, а твой код у меня работает
Посмотри Дэмос, а именно проект ".....\JeDi\JVCL\examples\RALib\RaInterpreter\JvInterpreterTest.dpr" PS Удивление прошло, но восхищение осталось |
| Автор: daemonaz 11.3.2012, 15:31 |
| Мне нужна помощь, как предоставить набор готовых функции пользователям для написания собственных скриптов и причем самых необходимых, затем по нажатию кнопочки этот скрипт запустить? ну например написать скрипт заливки прошивки в микроконтроллер через COM-порт, есть функция отправки по протоколу XModem xmodem_send(), ожидания символа по таймауту wait () и run() для запуска прошивки, вот так получится скрипт wait(RedBoot); // ждем строку RedBoot XModem_send(software.bin); // отправка файла sleep(1000); //пауза Как это все можно сделать с помошью JvInterpreterProgram? |