Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
2-1140434549
ForX
2006-02-20 14:22
2006.03.12
TQuery and TTable


15-1140175045
Неуверенный
2006-02-17 14:17
2006.03.12
Вставка командной строки в MSDOS


2-1140711582
13
2006-02-23 19:19
2006.03.12
проблема с XPMAN


15-1139894641
Лисенок
2006-02-14 08:24
2006.03.12
без темы


3-1137986955
maep
2006-01-23 06:29
2006.03.12
TOraLoader, две проблемы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский