DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет. А. Шевелёв
Чтение книги онлайн.
Читать онлайн книгу DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет - А. Шевелёв страница 22
eval (eval ({||.t.}))
поэтому необходим посредник, с помощью которого блок кода можно передать в виде строки, например
stEval (» F:=FieldGet (1)»,». t.»,». t.»)
где stEval – итератор для текущей записи;
«.t. " – блок кода в виде строки;
FieldGet (1) – операция для текущей записи;
asEval (A:=aArray (10), " P1:=x»)
где asEval – итератор массива.
Движок блоков кода
Сами по себе блоки кода – потрясающее достижение в программировании. Продолжение развития этой идеи, блоков кода (тримплетты) и виртуальной машины мы видим и в технологии Java. Блоки кода повсеместно используются в исходном тексте рассматриваемой программы. Это стало стилем программирования и элементом, позволяющим перенести часть исходного кода из компилируемой части программы в базу данных. Блоки кода позволяют строить очень изящные конструкции. Уменьшается объём исходного кода, повышается функциональность и выразительность программного кода.
Блоки кода можно хранить в базе данных в виде строк. С другой стороны, блоки кода можно хранить в массиве в скомпилированном виде, готовом для немедленного использования. Эти и другие свойства блоков кода дают возможность построить очень простой и эффективный движок блоков кода системы IxBase.
Напомним, что представляет собой блок кода. Блок кода – это безымянная функция. Синтаксис этой функции следующий:
{| a1,a2 |.t.}
Хотя функция эта безымянная, ссылку на неё можно присвоить переменной
bC:= {| a1,a2 |.t.}
и выполнить с помощью функции eval ()
Eval (bC)
В эту функцию можно передать параметры, функция с аргументами прмет следующий вид:
Eval (bC, a1,a2)
Список параметров безымянной функции при объявлении располагается между двумя вертикальными линиями:
{|a1,a2|.t.}
Движок блоков кода системы IxBase – это функция DbfRun (cName). В функцию передается имя блока кода, хранящегося в базе данных, который необходимо выполнить. Текст рабочей функции программы IxBase приведен ниже:
*********************************************************
FUNCTION dbfRun (iOrd)
/********************************************************
Синтаксис:
DbfRun (iOrd) —> evalution
Аргументы:
iOrd – имя блока кода, который необходимо выполнить.
Возвращаемое значение:
после выполнения функция возвращает результат выполнения блока кода.
Описание:
Функция системная.
На ее базе сформирован менеджер-интерпретатор блоков кода.
Функция работает с таблицей DBFBLO00.dbf
Если вызываемый вектор не существует в таблице блоков кода, то он будет создан.
Выполнение блоков кода поддерживается стеком, размер которого определен массивом