Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вычислить [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)) * ПрайсЦена'


Наверх

Титульная страница Поиск, карта сайта Написать письмо