问一个自定义计算公式的问题,请大家帮忙看看。(80)

  • 主题发起人 主题发起人 weibinggui
  • 开始时间 开始时间
W

weibinggui

Unregistered / Unconfirmed
GUEST, unregistred user!
首先计算的元素是定好的:长度 、宽度、高度、重量、指定数量、工时、单价,无素不可以修改。我可以自定义计算公式:RESULT:=(长度*高度*宽度*单价)并可以将这个公式保存下来。我是想把这个公式形成STRING “(长度*高度*宽度*单价)”,然后存在数据库中。但怎样将这个STRING解析成公式,不知道该怎样处理,大家有没有类似的处理经验。我想过将元素放到数据库中进行运算,算是不安全,如果能全部在前台处理那就好了。请大家帮忙想想。
 
写个函数不就行吗?做到数据库中,是为修改方便吗?那就取出来后分隔字符,再变成正常的函数运算.
 
问题是这个公式是不确定的,是由客户自定义的,需要客户在制单时选择算法。如公式A:长度*单价公式B:宽度*单价公式C:高度*单价公式D:(高度/100)*单价等等,不是固定的,也不能写死.这本身是一个函数,现在只是看怎样实现比较好.
 
表达式分析虽然比较经典,但也早已是一个老掉牙的问题了,早已经得到比较完善的解决了,查查大富翁早期的帖子吧! 如果还不行的话,最起码在很多早期的控件组中都有比较完美的解决方案,比如:delphi早期的自带控件QuickReport,去网上下载一个QuickReport的源代码,其中有3个单元就是专门解决表达式分析的,把那3个单元摘出来,放到你自己的工程中,花点时间读一下人家写好的自定义函数表达式部分,就可以了。像这种+-*/()简单运算符组成的表达式,根本不需要做任何修改。
 
谢谢orangutang!我按你的方式看看。
 
用vbscript或者javascript里的eval函数即可。你在数据库中可以存一个 长度*高度*宽度*单价 的字符串在使用时,把每个元素用具体的数值替换掉,变成例如 1*2*3*4的字符串,然后用eval函数执行即可。诚如orangutang而言,这种做法在大富翁早期的帖子中已经说的很清楚了
 
用孟兄的方法比较好解决,已经处理好了!谢谢两位的帮忙。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部