* При перепечатке материалов ссылка на 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

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

Создание отчетов из кода
Панель Standard
Семиуровневая модель ЛВС
Свойство Driver
Редактор кода
Программы для работы с e-mail
Свойство Mask
Панель Desktop
Дополнительные функции
Версии Windows Sockets
Метод Print
ПРОСТЕЙШИЙ DATASET
Примеры выражений
Создание и отправка сообщения
Загрузка изображений в Runtime
| 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


     



Rambler's Top100

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

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