![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вычислить [D5, XP]
Тимофей © (2007-06-27 22:43:00)ситуация проста:
Есть поле в стринггриде, которое должно вычисляться.
Пример поля (string):
'Количество * 2'
в итоге я нахожу вовне параметр Количество и заменяю его на цифру и остается напр: '30 * 2', как мне получить (вычислить) результат (в string) этого выражения как можно более простым способом ?
Игорь Шевченко (2007-06-28 11:19:00) [1]
> может у кого есть похожий код разпарсировки и вычисления?
Этих парсеров и калькуляторов в сети, как звезд на небе.
Сергей М. (2007-06-28 09:47:00) [2]
> осталось найти и подключить этот компонент
Project -> Import Type Library .. -> Microsoft Script Control -> Install
Malik (2007-06-28 00:54:00) [3]Там я тебе пример своего калькулятора дал. Если нужно разбирайся...
Malik (2007-06-28 00:51:00) [4]проверь почту!!!
Тимофей (2007-06-27 23:19:00) [5]
> Используй TScriptControl
да, почитал про этот компонент, это хорошая идея. надыбал даже примерчик
{$APPTYPE CONSOLE}
uses ActiveX, MSScriptControl_TLB;
var
scr: TScriptControl;
begin
CoInitialize(nil);
scr := TScriptControl.Create(nil);
scr.Language := 'VBS'; // Используем VBScript
scr.AddCode('A = 55'); // Код сразу выполняется.
scr.AddCode('B = 11');
scr.AddCode('X = A + B');
scr.AddCode('MsgBox X'); // Окно с результатом
WriteLn(scr.Eval('X')); // Результат вытаскивается в делфи и печатается
scr.Free;
end.
только осталось найти и подключить этот компонент, не подскажешь где и как это сделать ?
Loginov Dmitry (2007-06-27 23:08:00) [6]Используй TScriptControl
Тимофей (2007-06-27 22:59:00) [7]может у кого есть похожий код разпарсировки и вычисления?
TUser (2007-06-27 22:56:00) [8]
> Неужели нет какой нибудь функции в дельфи типа:
стандартной нет
Тимофей (2007-06-27 22:54:00) [9]
> разобрать посимвольно, посчитать.
Неужели нет какой нибудь функции в дельфи типа:
S1:=Calculate(String);
???
*это я придумал )
homm (2007-06-27 22:51:00) [10]Преобразовать в обратную польскую запись, разобрать посимвольно, посчитать.
Тимофей (2007-06-27 22:47:00) [11]Ессесенно, может быть выражение и посложнее, например:
'((Количество * 2) + (Количество2 + 5)) * ПрайсЦена'