![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите написать скрипт-движок [D7, WinXP]
gray_falcon © (2007-07-27 14:07:00)В общем проблема такая: мне нужен быстрый скрипт-движок, который бы позволил реализовать методы объектов своими средствами. Короче есть некоторый класс в котором N переменных для хранения скриптов. При создании экземпляра класса скрипты загружаются из некоторого файла в соответствующие переменные. А затем по порядковому номеру вызываются.
Вот и вопрос как мне сделать этот двигатель. Скрипт представляет собой последовательность байтов, где каждая команда занимает X байт. Я не могу придумать как прочитав, (допустим, 2 байта) вызвать нужную команду, (например уничтожить экземпляр), из библиотеки готовых команд.
Leonid Troyanovsky (2007-07-28 12:31:00) [1]
> gray_falcon © (28.07.07 01:12) [2]
> не могу правильно написать код, т.е. опят же не знаю как
> организовать вызов процедуры.
type
TFunc = function (param: Extended): Extented;
var
funcs: array[0..MaxFnCnt] of TFunc;
..
funcs[0] := @f0; // заполняем массив адресами вызываемых функций
funcs[1] := @f1;
..
y := funcs[i](x); // вызов i фукнкции.
> Я не спрашивал как использовать готовые, а как реализовать
> именно свой.
Лучше, все же, использовать готовые.
См., например, на сайте by Anatoly Podgoretsky статью
Анатолия Тенцера "Использование Microsoft ScriptControl"
--
Regards, LVT.
gray_falcon (2007-07-28 01:12:00) [2]Я не спрашивал как использовать готовые, а как реализовать именно свой. Мне просто надо узнать как вызвать определенную функцию через двубайтовое число. Называть функции по таким числовым именам, а потом вызывать по имени мне показалось извращением. А если составить массив, в котором под номером данной функции будет указатель на подпрограмму я до конца не могу правильно написать код, т.е. опят же не знаю как организовать вызов процедуры.
Сергей М. (2007-07-27 14:14:00) [3]
> gray_falcon
Чем не угодил готовый FastScript (в составе, например, FastReport) ?