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

Вниз

Как текст преобразовать в код Delphi   Найти похожие ветки 

 
RKV   (2003-06-13 22:12) [0]

Всем доброго времени суток.

Вопрос вот в чем, если есть строковая константа:
sVal := "2+2";
Как сделать так, чтобы
iVal := Какая_то_Функция(sVal) := 2+2 := 4;
, т.е. строковую константу sVal перевести в арифметическое выражение.

Проще говоря, как строку перевести в код Delphi?


 
Всеволод Соловьёв ©   (2003-06-13 22:26) [1]

посмотри в кладовке, "Калькулятор строк". мое изобретение :) убитое правда, нос таким, как с детским лепетом справляется. стандартной функции такой нету.


 
Всеволод Соловьёв ©   (2003-06-13 22:28) [2]

http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1054663010&n=0


 
Vulko ©   (2003-06-14 04:59) [3]

а ты не пробовал сделать алгоритм сам.
например ищи + - / * и цифры, а дальше...

конечно не мало времени потратишь, но зато...

или поищи компонент оный - в нете таких полно.


 
Asteroid ©   (2003-06-14 12:07) [4]

Еще интересней было бы откомпилировать выражение "2+2" и выполнить полученный код.


 
blackweber ©   (2003-06-14 14:59) [5]

На Королевстве есть статья: "Компилятор синтаксических выражений"
Автор Сергей Втюрин aka Nemo,
дата публикации 01 августа 2002г


 
RKV   (2003-06-16 01:14) [6]

Всем спасибо за ответы.

Для "Всеволод Соловьёв" :
Посмотрел программу, но в ней все арифметические функции ты описываешь самостоятельно.

Для "Vulko" :
Да компонент калькулятора есть. Я просто спросил частный случай.

Для "Asteroid " :
А если поподробнее...

Для "blackweber" :
Порылся на Королевстве, но, к сожалению, ничего не нашел.
Если не затруднит оставь ссылку.

Я, наверно, не очень хорошо сформулировал свой вопрос. Вопрос был вот в чем :
Есть ли такая функция, которая преобразует обычный текст в код Delphi, нечто похожее на Perl"овскую функцию eval().

Вообще хотелось бы сделать так :
Пользователь вводит в поле Memo :
a:=1;
b:=2;
c:=a+b;
И нажимает, например, "Enter"
После нажатия "Enter" срабатывает процедура, которая берет текст из Memo и :
Какая_то_Функция(Memo.text);
Memo.Lines.Add("c = "+c);

И в поле Memo после всего текста появится :
c = 3



 
Asteroid ©   (2003-06-16 02:31) [7]

Стандартной функции нет. Поподробнее это так.
Если в Дельфи написать "a := 1; b := 2; c := a+b;", откомпилировать и запустить, в c будет значение 3. Т.е. по некоторому тексту (а программа - это текст) создается исполняемый код, который приводит к появлению в некотором месте процессоро-памяти числа 3.
Значит, можно написать такую программу (малый компилятор), которая по введенному пользователем тексту сделает исполняемый машинный код, который приведет к появлению нужного числа.
Короче, если можно сделать машинный код из программы, почему нельзя сделать машинный код из текста, введенного пользователем?

И вот ссылка с "Королевства":
http://www.delphikingdom.ru/treasury/compile.htm


 
blackweber ©   (2003-06-16 08:48) [8]


> Asteroid © (16.06.03 02:31)

Exactly right



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

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

Наверх




Память: 0.48 MB
Время: 0.025 c
14-7602
Aga
2003-06-18 00:10
2003.07.03
Opera 7


3-7308
AkaSaint
2003-06-08 21:58
2003.07.03
Как обновить запрос на сервере приложений


9-7282
Alek Aaz
2003-01-16 05:06
2003.07.03
За и против GLscene


11-7374
Gandalf
2002-10-24 18:39
2003.07.03
Теперь у нас есть Юникод?!


1-7484
Evil_forever
2003-06-19 23:52
2003.07.03
---|Ветка была без названия|---