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


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

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

Компонент TQRSubDetail
OnIndexMissing
Связь между ЛВС посредством мостов
FilePathFull
Локальная сеть Token Ring
Version
Программы для работы с e-mail
DateTimeHandling
ППП автоматизированного проектирования
Классы построителя отчетов (Report Builder)
ТЕХНОЛОГИЧЕСКИЙ ПРОЦЕСС ОБРАБОТКИ И ЗАЩИТЫ ДАННЫХ
Свойство ShowProgress
Признаки автоматизированных рабочих мест. Классификация автоматизированных рабочих мест
Свойство Data
Translate
| 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 | Расширение интерпретатора выражений. Регион сайта: Москва и Санкт-Петербург