Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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
14-7622
UserName
2003-06-09 16:07
2003.07.03
А стоит ли?...


1-7397
Maxim Pshevlotsky
2003-06-23 04:53
2003.07.03
Перетаскивание формы курсором мыши


14-7614
fool
2003-06-18 16:44
2003.07.03
Info about


3-7338
shnitken
2003-06-10 11:14
2003.07.03
Как узнать количество строк в dbgrid?


1-7388
BDRON
2003-06-22 21:34
2003.07.03
Диалоговое окно сохранения изменений





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский