Форум: "Основная";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.014 c