
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.10.2003, 19:38
|
|||
|---|---|---|---|
|
|||
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
может есть у кого dll (а можно с source) Синтаксического анализатора выражений, который понимал что-то наподобии: if((X=1),(Y1+Y2)*0,2),(Y1-Y2)), где X,Y1,Y2 - переменные. PS: Дельный совет тоже непомешает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.10.2003, 20:13
|
|||
|---|---|---|---|
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
в rfunc.dll есть ф-я CalcExpr(VARCHAR(255),VARCHAR(255)) Пример: CalcExpr('sin(pi*:p11/3)*:p22','p11=2;p22=4') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.10.2003, 20:28
|
|||
|---|---|---|---|
|
|||
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
а вместо 'sin(pi*:p11/3)*:p22' я могу поставить "if (выражение)" ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.10.2003, 20:58
|
|||
|---|---|---|---|
|
|||
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
поставил: но что то с синтаксисим не все понятно: CalcExpr(S, S) - if(expr, x1, x2) - если expr=0, то x2, иначе x1 вот я и поставил: "CalcExpr('if((:P11>:P2),1,-1)', 'P11=2;P2=10')" - ....ничего а "CalcExpr('power(:P11,:P2)', 'P11=2;P2=2')" - нормально. Подскажите - где ошибка! ........ ..и еще : при компиляции скрипта у меня выдало ошибку на "IIF" (Yaffil 1.0) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.10.2003, 15:35
|
|||
|---|---|---|---|
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
CalcExpr(S, S) Пример: CalcExpr('Sin( Pi*:p11/3)*:P2', 'P11=2;P2=10') f Простенький анализатор выражений. Поддерживаемые функции и операции + - * / Sin, Cos, tg, ctg, ArсCos, ArcSin, ArcTg, sh, ch, th, exp, lh, lg, sqrt, sqr, abs(x1) sgn(x1) - знак числа x1 log(x1,x2) - логарифм x1 по основанию x2 power(x1,x2) - возведение x1 в степень x2 if(expr, x1, x2) - если expr=0, то x2, иначе x1 Min(x1, ...) - минимум из чисел Max(x1, ...) - максимум из чисел Sum(x1, ...) - суммирование аргументов Avg(x1, ...) - среднее арифметическое Pi - число Pi. Для использования переменных в выражении - перед ними ставится двоеточие, и они описываются во втором параметре (см. пример). ExprIsValid(S, S) i Проверка на корректность заданного выражения. Возвращает 0, если все правильно, иначе - код ошибки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.10.2003, 15:39
|
|||
|---|---|---|---|
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
кстати если тебе надо для работы в IB просто скопируй в папку UDF, только переименуй в какое нибудь другое имя. Затем выполни скрипт DECLARE EXTERNAL FUNCTION CALCEXPR CSTRING(16384), CSTRING(16384) RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'fn_CalcExpr' MODULE_NAME 'rfunc'; DECLARE EXTERNAL FUNCTION EXPRISVALID CSTRING(16384), CSTRING(16384) RETURNS INTEGER BY VALUE ENTRY_POINT 'fn_ExprIsValid' MODULE_NAME 'rfunc'; где 'rfunc' переименнованная дллка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
28.10.2003, 16:54
|
|||
|---|---|---|---|
|
|||
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
да я все прекрасно понимаю... и UDF я подключил и автор писал:CalcExpr('Sin( Pi*:p11/3)*:P2', 'P11=2;P2=10') у меня работает и автор писал:CalcExpr('power(:P11,:P2)', 'P11=2;P2=2') работает, а вот такую операция - автор писал:if(expr, x1, x2) - если expr=0, то x2, иначе x1 я реализовать немогу...Вот и прошу помощи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
29.10.2003, 19:49
|
|||
|---|---|---|---|
"Синтаксического анализатора выражений" из DLL |
|||
|
#18+
Если тебе надо именно такая конструкция то воспользуйся ф-ми IIF(i,i1,i2) i1 если i<>0 DIF(f,f1,f2) i-integer f-float из rfunc.dll DECLARE EXTERNAL FUNCTION IIF INTEGER, INTEGER, INTEGER RETURNS INTEGER BY VALUE ENTRY_POINT 'fn_iif' MODULE_NAME 'rfunc'; DECLARE EXTERNAL FUNCTION DIF INTEGER, DOUBLE PRECISION, DOUBLE PRECISION RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'fn_dif' MODULE_NAME 'rfunc'; DECLARE EXTERNAL FUNCTION CIF INTEGER, CSTRING(256), CSTRING(256) RETURNS CSTRING(256) ENTRY_POINT 'fn_cif' MODULE_NAME 'rfunc'; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=40&mobile=1&tid=1579737]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 325ms |

| 0 / 0 |
