Рейтинговые книги
Читем онлайн DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет - А. Шевелёв

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 2 3 4 5 6 7 8 9 10 11

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

Если вызываемый вектор не существует в таблице блоков кода, то он будет создан.

Выполнение блоков кода поддерживается стеком, размер которого определен массивом arrDbfRun [].

Откомпилированный блок помещается в массив для повторного использования.

Например:

DBFRUN («ALLUSE00F2») – вызывается на выполнение блок кода с именем «ALLUSE00F2»

Файл: ixBase.prg

Автор: Анатолий Шевелев.

Дата создания: 1993 год.

Дата последнего изменения: 1995 год.

*********************************************************

LOCAL reT:=.t.

LOCAL inT:=aScan (arrDbfRun, {|z| z [1] ==iOrd})

LOCAL ixB

IF inT=0

aDel (arrDbfRun,1)

IF (ixB:=DbfBlo00-> (NaiSpr (iOrd,1,3))) =»»

ixAddVal (ixB, iOrd, SubStr (iOrd,9),ixB:=«*»)

ixB:=» {||.t.}»

ELSEIF ixB=«*»

ixB:=» {||.t.}»

ELSEIF ixB=» {|»

ELSE

ixB:=» {||"+ixB+»}»

ENDIF

arrDbfRun [Int:=Len (arrDbfRun)]:= {iOrd,& (ixB)}

END

BEGIN SEQUENCE

ixO:=iOrd

reT:=eVal (arrDbfRun [inT,2])

RECOVER

eval (& (» {||.t.}»))

errorblock (ErrorBlock ({||.t.}))

END SEQUENCE

RETURN reT

*********************************************************

Таблица для хранения блоков кода

Эта таблица для программы является системной и ключевой. Таблица состоит из трех полей. Первое поле хранит имя фолдера блока кода. Второе – предназначено для спецификаций имени вектора обработки вызова из программы. Третье – содержит сам блок кода.

Конец ознакомительного фрагмента.

1 2 3 4 5 6 7 8 9 10 11
На этой странице вы можете бесплатно читать книгу DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет - А. Шевелёв бесплатно.
Похожие на DbfWebServer. Способ эффективной работы с таблицами DBFв среде Интернет - А. Шевелёв книги

Оставить комментарий