Форум: "Потрепаться";
Текущий архив: 2003.07.03;
Скачать: [xml.tar.bz2];
ВнизКак текст преобразовать в код 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c