Как в програме сделать нечто вроде калькулятора ?

Delphiguru
Дата: 03.06.2009 08:23:28
Тоесть например в Edit пользователь вводит строковую формулу
'5*3+sqrt(10)'
И Программа должна расчитать эту формула.
Есть ли готовые решения калькуляторов на Delphi ?
RENaissance
Дата: 03.06.2009 08:37:19
Тынц

З.Ы Великий Ди Мао, пора научиться пользоваться поиском.
Картежник
Дата: 03.06.2009 09:24:04
Помню делал такую программу. Ничего сложного.
Delphiguru
Дата: 03.06.2009 09:26:53
автор
Помню делал такую программу. Ничего сложного.

Исходники есть ? Можешь выложить или скинуть на мыло ?
Картежник
Дата: 03.06.2009 09:28:36
Надо поискать. Давно это было. Там основное это функция которая возвращает ответ и все
Frees
Дата: 03.06.2009 09:37:52
Видел у EhLib RX комбо боксы в которых вместо выподающего списка калькулятор выпадает

у тебя цель какая именно расчет вырожении или дать пользователю возможность сощитать что то?
Delphiguru
Дата: 03.06.2009 09:49:25
автор
Видел у EhLib RX комбо боксы в которых вместо выподающего списка калькулятор выпадает

у тебя цель какая именно расчет вырожении или дать пользователю возможность сощитать что то?


Сделать вычисляемое поле в БД чтобы значение не в отчете вычилялось а прямо при забивке первичных данных.
Сам сдела счс тоже на основе калькулятора библиотеки RXLib -TRxCalcEdit
Но дело в том что данный калькулятор может вычислять только последовательно
т.е. игнорируя математические правила не поддерживает скобки нет фукций
Хотелось бы делать сразу довольно сложные и математически правильные вычисления.
Джибс
Дата: 03.06.2009 09:50:29
бедные юзеры ...
Delphiguru
Дата: 03.06.2009 10:03:08
автор
бедные юзеры ...

Почему ?
Например они забивают количество и цену поле стоимость вычисляется автоматически - удобно.
Или например длинну и ширину поле площадь тоже автоматом считается.
Думан Константин
Дата: 03.06.2009 10:19:04
Еще быстрее:

function Calc(const CalcStr: string): string;
var
  v : Variant;
begin
  v := CreateOleObject('MSScriptControl.ScriptControl');
  v.Language := 'JScript';
  Result := v.Eval(CalcStr);
  v := Unassigned;
end;