Имя Пароль
Зарегистрироваться


* При перепечатке материалов ссылка на www.SeoLiga.ru обязательна! RSS



Расширение интерпретатора выражений
19 февраля 2009

Построитель интерпретатора выражений также может быть расширен для ваших собственных функций. В действительности, все функции интерпретатора выражений реализованы, как add on функции, полностью отсутствуют какие либо функции внутри кода интерпретатора. Создание дополнительных функций состоит из двух шагов:
• Написать функцию класс, наследник от TQREvElementFunction
• Зарегистрировать функцию
Имеется два базовых типа add on функций простые функции и агрегатные функции. Оба типа функций могут быть с параметрами или без. Функции также могут получать переменное число параметров.
Примеры различных типов функций:
Simple without parameters Time
Simple with parameters Str(<numeric>)
Aggregated without parameters Count
Aggregated with parameters Sum(<numeric>)

Простые функции
Наиболее просто реализовать простую функцию, наследовать ее от TQREvElement (предок всех функций) и перекрыть функцию Calculate. Функция Calculate обязана возвращать, хоть какой ни будь результат. Реализация функции Time выглядит следующим образом:
TQREvTimeFunction = class(TQREvElementFunction)
public
function Calculate : TQREvResult; override;
end;
function TQREvTimeFunction.Calculate : TQREvResult;
begin
Result.Kind := resString;
Result.StrResult := TimeToStr(Now);
end;
Поскольку функция Time не может иметь ни одного параметра, то мы добавим проверку данного факта, и теперь реализация будет выглядеть так:
TQREvTimeFunction = class(TQREvElementFunction)
public
function Calculate : TQREvResult; override;
end;

function TQREvTimeFunction.Calculate : TQREvResult;
begin
if ArgList.Count = 0 then begin
Result.Kind := resString;
Result.StrResult := TimeToStr(Now); end
else
Result.Kind := resError;
end;
Переменная ArgList.Count содержит действительное количество параметров, которые были переданы в функцию. Доступ до параметров делается с помощью функции Arguments.


Теги: Borland Delphi

Статьи по теме:

Панель Browser
Свойство PixelsPerX
Метод PrinterSetup
Компоненты
Методо-ориентированные ППП
Свойство Bands для TQRSubDetail
Процедурные типы
Компонент TQRMemo
Сабклассинг окон на VCL
Электронная доска объявлений
AbsolutePath
GetIndexNames
GetFieldData
Свойство Units
Характеристика и назначение информационных технологий обработки данных
| Borland Delphi | ext |
 


Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31


     



Rambler's Top100

Данный сайт или домен продается ICQ: 403-353-727

© 2009 Seoliga.ru | Borland Delphi | Расширение интерпретатора выражений. Регион сайта: Москва и Санкт-Петербург