Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.12;
Скачать: CL | DM;

Вниз

Evaluate expression. Как выполнить выражение из строки??   Найти похожие ветки 

 
VIB ©   (2006-02-06 03:16) [0]

господа, необходдимо решить задачу, элементарно решаемую в других языках с помошбю функции eval. в двух словах, упрощенная задача такова: имеется символьная строка с неким выражением..например,

"Table1Field1.Value+Table1Field2.Value"

да хотя бы

"3+2"

вопрос: каким образом получить значение выражения в строке??? благодарю заранее..


 
Джо ©   (2006-02-06 03:24) [1]

> , элементарно решаемую в других языках

Тут опущено всего одно слово, зато ключевое. Именно: в других интерпретируемых языках. Дефли же не интерпретатор, но компилятор.


 
Defunct ©   (2006-02-06 05:08) [2]

> вопрос: каким образом получить значение выражения в строке??? благодарю заранее..

Сразу Вас разочарую..
Стандартного компонента, который способен решить Вашу задачу - нет.

Но если Ваш интерес сводится не к поиску готового компонента, тогда, несомненно, на этом форуме найдутся желающие и имеющие возможность Вам помочь.


 
TUser ©   (2006-02-06 05:22) [3]

См. алгоритм Дейкстры. Их у него несколько, но тебе нужено приведение выражение к постфиксной (обратной польской) записи. Или другой аналогичный алгоритм.

Из Delphi понадобятся FindComponent и модуль TypInfo.

Есть также FastScript, который твою задачу решит, но он платный. Есть триал. Кряков к нему нет и не планируется. Есть еще бесплатный PascalScript, реашет ли он твою задачу - не знаю. Еще есть TJvInterpretator, но он глючный.


 
буржуй   (2006-02-06 05:50) [4]

у меня тут встала аналогичная задача, но несколько проще +)
есть "логическое" выражение, стоит задача посчитать результат. к примеру
(0 and 1) or (1 and 1) = ... и т.д.
само выражение формируется пользователем (только за вместо 0/1 пишутся индексы условий из списка условий), значения 0 / 1 подставляются динамически на этабе обработки правила. может конечно есть более просто способ хранить подобные вырожения и разрешать их...


 
TUser ©   (2006-02-06 06:03) [5]

> у меня тут встала аналогичная задача

Аналогично - см. [3]


 
Leonid Troyanovsky ©   (2006-02-06 08:05) [6]


> TUser ©   (06.02.06 05:22) [3]

> Есть также FastScript, который твою задачу решит, но он
> платный. Есть триал. Кряков к нему нет и не планируется.
>  Есть еще бесплатный PascalScript, реашет ли он твою задачу
> - не знаю. Еще есть TJvInterpretator, но он глючный.


Есть бесплатный ScriptControl от MS, безглючный.

--
Regards, LVT.


 
TUser ©   (2006-02-06 08:09) [7]


> Leonid Troyanovsky ©   (06.02.06 08:05) [6]

Тут, кажется, требуется доступ к объектам Delphi и их свойствам. Разве майкрософтовское решение это может?


 
Leonid Troyanovsky ©   (2006-02-06 08:30) [8]


> TUser ©   (06.02.06 08:09) [7]

> Тут, кажется, требуется доступ к объектам Delphi и их свойствам.
>  Разве майкрософтовское решение это может?


Конечно. Это ж ActiveX, и для него дельфи сделает TScriptControl,
с помощью которого можно, например, (Language=VBScript):
Caption := ScriptControl1.Eval("3+2").

У Анатолия Подгорецкого на сайте в разделе "Весь Тенцер" есть статья
о использовании SC в дельфийских приложениях.

--
Regards, LVT.


 
Lamer@fools.ua ©   (2006-02-06 08:53) [9]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=737


 
VIB ©   (2006-02-06 22:07) [10]

спасибо, господа.. метод evaluate компонента FastScript полностью удовлетворил мои нужды.. ввиду ограниченных сроков,с другими просто нет времени разбираться.. всем большое спасибо..



Страницы: 1 вся ветка

Текущий архив: 2006.03.12;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.051 c
15-1140431797
McSimm
2006-02-20 13:36
2006.03.12
Caret в чужих окнах в зависимости от раскладки.


2-1140590291
nap<>
2006-02-22 09:38
2006.03.12
Процессы


2-1141033730
WestBronx
2006-02-27 12:48
2006.03.12
Как правельно указать параметры в OleCreateLinkToFile?


4-1134536809
Se
2005-12-14 08:06
2006.03.12
Форма не обрабатывает сообщения, когда неактивна


15-1140416697
Rentgen
2006-02-20 09:24
2006.03.12
Ссылка-чекбокс не работает в IE