![]() |
|
#1
|
|||
|
|||
![]() здравствуйте, кодеры!
я бы хотел узнать, у меня задание сделать калькулятор, НО необходимо сделать в нём СКОБКИ, не могли бы вы как то помочь, мне с этим. Заранее благодарю! |
#2
|
|||
|
|||
![]() Что именно подразумевается под словом СКОБКИ?
|
#3
|
|||
|
|||
![]() Цитата:
Как вариант парсить выражение и находить парные скобки. Вычислять их значение, складывать его куда-нибудь. Потом просто вычислять слева-направо, и дойдя до скобки брать ранее посчитанное и использовать |
#4
|
||||
|
||||
![]() ИМХО самое простое решение - т.н. "Обратная польская нотация". Реализация есть в интернете.
jmp $ ; Happy End! The Cake Is A Lie. |
#5
|
||||
|
||||
![]() легко считает даже функции "(Math.sqrt(9)+47)*100":
Код:
uses ComObj, type TForm1 = class(TForm) Button1: TButton; Edit: TEdit; procedure Button1Click(Sender: TObject); procedure TForm1.Button1Click(Sender: TObject); var WebBrowser: OleVariant; begin WebBrowser:=CreateOleObject('InternetExplorer.Application'); WebBrowser.Navigate('about:blank'); WebBrowser.Document.parentWindow.execScript('var r='+Edit.Text+'; document.write(r);', 'javascript'); ShowMessage(WebBrowser.Document.body.innerText); WebBrowser.Quit; end; Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() Благодарю всех за помощь!
|
#7
|
|||
|
|||
![]() Цитата:
а зачем мне при этом веб браузер?) |
#8
|
||||
|
||||
![]() Затем, что разбирает ваше выражение и считает именно он.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#9
|
||||
|
||||
![]() Ну, не совсем он. Считает выражение JavaScript, встроенный в Internet Explorer, экземпляр которого и создаётся.
Кстати, как раз вчера хотел предложить аналогичное решение... ![]() Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#10
|
||||
|
||||
![]() Цитата:
![]() ![]() добавлено позже вот здесь можно посмотреть на все функции: http://www.delphisources.ru/forum/sh...3&postcount=23 Пишу программы за еду. __________________ Последний раз редактировалось NumLock, 05.12.2011 в 15:43. |
#11
|
||||
|
||||
![]() можно еще IScriptControl использовать:
Код:
program Project1; {$APPTYPE CONSOLE} uses ActiveX, ComObj, MSScriptControl in 'MSScriptControl.pas'; var ScriptControl: IScriptControl; Expression: OleVariant; Eval: String; begin Expression:='Math.sqrt(9)*5+85'; OleInitialize(nil); ScriptControl:=CreateComObject(CLASS_ScriptControl) as IScriptControl; ScriptControl.Language:='javascript'; Eval:=ScriptControl.Eval(Expression); Writeln(Expression+' = '+Eval); Readln; end. Пишу программы за еду. __________________ |
#12
|
|||
|
|||
![]() Цитата:
я благодарю вас за помощь, но проблема в том что я практически ничего здесь не понимаю |
#13
|
||||
|
||||
![]() тут вообще все просто: в Expression вводишь выражение, можно со скобками, которое нужно вычислить, в Eval получаешь результат. на остальные строки не обращай внимания
![]() Пишу программы за еду. __________________ |