![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
eval() в Delphi
wii © (2008-01-20 17:28:00)Существует ли в Delphi аналог функции eval() из javascript, которая переводит строку в выражение?
clickmaker (2008-01-21 15:47:00) [21]а если там нужны только 4 арифм. действия, так и вовсе фигня )
homm (2008-01-21 15:47:00) [22]> [22] Юрий Зотов © (21.01.08 15:40)
> 1. Почему на Delphi нельзя написать "полноценный runtime
> интерпретатор, поддерживающий весь синтаксис javascript"?
Нет проблем с написанием самого интерпритатора. Есть проблемы со связью среды выполнения интерпетированного и нативного кода. Читать [7], [8], [10].
> Как следует из вопроса, полноязычный интерпретатор автору не нужен.
Из вопроса, по моему это никак не следует.
> Ему нужно перевести строку в выражение.
И в выражении манипулировать переменными, задаными в нативном коде.
Все я понял, к чему Вы клоните, понятно, что задачу можно видоизменить, как например в [16], и она становится детской. Но почему я не прав, отвечая что в изложенном виде задача не решаемая, я не понимаю.
Юрий Зотов (2008-01-21 15:40:00) [23]> homm © (21.01.08 15:34) [20]
1. Почему на Delphi нельзя написать "полноценный runtime интерпретатор, поддерживающий весь синтаксис javascript"? Почему его "и быть не может"?
2. Как следует из вопроса, полноязычный интерпретатор автору не нужен. Ему нужно перевести строку в выражение. Значит, задача резко упрощается и тем более может быть решена на Delphi.
homm (2008-01-21 15:36:00) [24]*натичной = нативной
homm (2008-01-21 15:34:00) [25]> [19] Юрий Зотов © (21.01.08 15:30)
> А тогда почему же на Delphi нельзя написать функцию для
> вычисления выражений?
Потому что eval это не «функцию для вычисления выражений». Это полноценный runtime интерпретатор, поддерживающий весь синтаксис javascript. Может быть это возможно в Delphi.NET, но в натичной точно нет, иначе нужна нехилая база знаний о среде выполнения и имеющихся переменных и классах.
Юрий Зотов (2008-01-21 15:30:00) [26]> homm © (20.01.08 21:48) [11]
Разве интерпретаторы уже отменили? Вроде, нет.
А тогда почему же на Delphi нельзя написать функцию для вычисления выражений? Почему ее "и быть не может"?
Григорьев Антон (2008-01-21 13:58:00) [27]http://www.delphikingdom.com/asp/itemq.asp?mode=1&ItemID=432
Anatoly Podgoretsky (2008-01-21 00:52:00) [28]> wii (20.01.2008 21:51:14) [14]
Зато она есть в WSH
engine (2008-01-20 22:00:00) [29]> [14] wii (20.01.08 21:51)
Ну если так хочется, то можно свою написать, что-то вида:
type TParams = array of Double;
function Calculate (Params : TParams; Formula : String) : Double;
где в формуле к параметрам обращаться по индексам:
( 1 + 2 ) 3
Я так вижу решение. После пары литров пива ))
Сергей М. (2008-01-20 21:58:00) [30]
> wii (20.01.08 21:36) [7]
И где же ты собрался объявлять/инициализировать эту самую переменную х ?
wii (2008-01-20 21:51:00) [31]
> engine © (20.01.08 21:49) [12]
>
> > [10] wii (20.01.08 21:47)
>
> нет и не надо.
Ну почему не надо? Очень даже полезная функция.
engine (2008-01-20 21:49:00) [32]> [10] wii (20.01.08 21:47)
нет и не надо.
wii (2008-01-20 21:49:00) [33]
> Loginov Dmitry © (20.01.08 21:45) [9]
>
>
> Если так тянет к javascript, то можешь его использовать
> и из Delphi. MS ScriptControl такую возможность предоставляет.
>
Спасибо. Надо будет изучить.
homm (2008-01-20 21:48:00) [34]> [10] wii (20.01.08 21:47)
> Ну как я понял функции такой в Делфи все таки нет.
Правльно понимаешь, и быть не может.
wii (2008-01-20 21:47:00) [35]
> а где значение переменной х брать?
Ну в javascript ее можно задать до вызова функции.
Ну как я понял функции такой в Делфи все таки нет.
Loginov Dmitry (2008-01-20 21:45:00) [36]> Например нам дана строка "x+x". И она должна восприниматься
> как выражение x+x где x уже переменная
Если так тянет к javascript, то можешь его использовать и из Delphi. MS ScriptControl такую возможность предоставляет.
engine (2008-01-20 21:43:00) [37]> [7] wii (20.01.08 21:36)
а где значение переменной х брать?
wii (2008-01-20 21:36:00) [38]
> это как следует понимать?
>
Например нам дана строка "x+x". И она должна восприниматься как выражение x+x где x уже переменная
homm (2008-01-20 21:33:00) [39]> [5] Loginov Dmitry © (20.01.08 21:32)
> это как следует понимать?
Он хочет runtime компилятор.
Loginov Dmitry (2008-01-20 21:32:00) [40]>переводит строку в выражение
это как следует понимать?