![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Evaluate expression. Как выполнить выражение из строки?? [D7, WinXP]
VIB © (2006-02-06 03:16:00)господа, необходдимо решить задачу, элементарно решаемую в других языках с помошбю функции eval. в двух словах, упрощенная задача такова: имеется символьная строка с неким выражением..например,
'Table1Field1.Value+Table1Field2.Value'
да хотя бы
'3+2'
вопрос: каким образом получить значение выражения в строке??? благодарю заранее..
VIB (2006-02-06 22:07:00) [1]спасибо, господа.. метод evaluate компонента FastScript полностью удовлетворил мои нужды.. ввиду ограниченных сроков,с другими просто нет времени разбираться.. всем большое спасибо..
Lamer@fools.ua (2006-02-06 08:53:00) [2]http://www.delphikingdom.com/asp/viewitem.asp?catalogid=737
Leonid Troyanovsky (2006-02-06 08:30:00) [3]
> TUser © (06.02.06 08:09) [7]
> Тут, кажется, требуется доступ к объектам Delphi и их свойствам.
> Разве майкрософтовское решение это может?
Конечно. Это ж ActiveX, и для него дельфи сделает TScriptControl,
с помощью которого можно, например, (Language=VBScript):
Caption := ScriptControl1.Eval('3+2').
У Анатолия Подгорецкого на сайте в разделе "Весь Тенцер" есть статья
о использовании SC в дельфийских приложениях.
--
Regards, LVT.
TUser (2006-02-06 08:09:00) [4]
> Leonid Troyanovsky © (06.02.06 08:05) [6]
Тут, кажется, требуется доступ к объектам Delphi и их свойствам. Разве майкрософтовское решение это может?
Leonid Troyanovsky (2006-02-06 08:05:00) [5]
> TUser © (06.02.06 05:22) [3]
> Есть также FastScript, который твою задачу решит, но он
> платный. Есть триал. Кряков к нему нет и не планируется.
> Есть еще бесплатный PascalScript, реашет ли он твою задачу
> - не знаю. Еще есть TJvInterpretator, но он глючный.
Есть бесплатный ScriptControl от MS, безглючный.
--
Regards, LVT.
TUser (2006-02-06 06:03:00) [6]> у меня тут встала аналогичная задача
Аналогично - см. [3]
буржуй (2006-02-06 05:50:00) [7]у меня тут встала аналогичная задача, но несколько проще +)
есть "логическое" выражение, стоит задача посчитать результат. к примеру
(0 and 1) or (1 and 1) = ... и т.д.
само выражение формируется пользователем (только за вместо 0/1 пишутся индексы условий из списка условий), значения 0 / 1 подставляются динамически на этабе обработки правила. может конечно есть более просто способ хранить подобные вырожения и разрешать их...
TUser (2006-02-06 05:22:00) [8]См. алгоритм Дейкстры. Их у него несколько, но тебе нужено приведение выражение к постфиксной (обратной польской) записи. Или другой аналогичный алгоритм.
Из Delphi понадобятся FindComponent и модуль TypInfo.
Есть также FastScript, который твою задачу решит, но он платный. Есть триал. Кряков к нему нет и не планируется. Есть еще бесплатный PascalScript, реашет ли он твою задачу - не знаю. Еще есть TJvInterpretator, но он глючный.
Defunct (2006-02-06 05:08:00) [9]> вопрос: каким образом получить значение выражения в строке??? благодарю заранее..
Сразу Вас разочарую..
Стандартного компонента, который способен решить Вашу задачу - нет.
Но если Ваш интерес сводится не к поиску готового компонента, тогда, несомненно, на этом форуме найдутся желающие и имеющие возможность Вам помочь.
Джо (2006-02-06 03:24:00) [10]> , элементарно решаемую в других языках
Тут опущено всего одно слово, зато ключевое. Именно: в других интерпретируемыхязыках. Дефли же не интерпретатор, но компилятор.