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


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

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

Упрощение интерфейса
Свойство Transparent
Базовые технологии обработки запросов в архитектурах файл —сервер и клиент — сервер
Компоненты
Определение готовности сокета
Простая функция Паскаля
Исполнительные информационные системы (Executive Support System)
ТЕХНОЛОГИЧЕСКИЙ ПРОЦЕСС ОБРАБОТКИ И ЗАЩИТЫ ДАННЫХ
Вопросы разработки информационных технологий обработки данных
EmptyTable
Метод Print
Свойство PrintIfEmpty
Панель HTML Design
Версии Windows Sockets
Компонент TQRDBImage
| 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 | Расширение интерпретатора выражений. Регион сайта: Москва и Санкт-Петербург