高效的逻辑运算(100分)

江远

Unregistered / Unconfirmed
GUEST, unregistred user!
我在程序中需要对一些字符串需要计算出其逻辑值,
如:'(312>200)and(True)or(sin(45)>0.1)'
由于需要处理大量这样的字符串,所以希望非常高效
最好能用汇编完成,
最好能支持各种函数(只支持四则运算+逻辑运算,若速度快也给分)


 
自己解析太麻烦了。
可以调用其它语言的功能,如Foxpro 的 Eval
 
To JsXjd:
请问如何调用其它语言的功能,如Foxpro 的 Eval?
(谢谢你的关注,你曾回答过我的问题)
另外:
我现在有个想法,想先逻辑表达式先转化为数学表达式,
然后再用一些计算数学表达式的控件,那位大师可以提供帮助
 
b:boolean;
fox:=createOleobject('VisualFoxPro.application');
b:=fox.Eval('(312>200) and (.t.) or (sin(45)>0.1)');
fox.quit;
 
具体怎样实现调用foxpro?要不要在系统上装上foxpro才可以啊/
上面的例子我试了一下,不行啊/
我也想调用foxpro的一些功能如:run del c:/*.*
就这样的功能,不知delphi不用批处理是怎样调用的?
 
To JsXjd:
我与socool_100有同感,
并且调用Foxpro能快吗?
 
to socool_100:
WinExec('command /c del c:/*.*',SW_NORMAL); //执行完后立即关闭DOS窗口

WinExec('command /k del c:/*.*',SW_NORMAL); //执行完后不关闭DOS窗口
 
如果在delphi中调用foxpro,首先开销太大,
其次也太糟蹋delphi和自己的名声了。
 
谢谢zw84611:
不过还是有问题:我的系统是Win2000执行后没反应。
看了帮助是说32位系统要用 CreateProcess是不是。
按照你的命令该如何写这个程序(我对系统函数很不熟);
 
to socool_100:win2k下将command改成cmd
 
所我所知,一般的“高级”语言都没有提供这样的功能,
而“低级”语句都提供了,还如脚本。
不满意那就自己实现吧!
不过调用现成的应该比自己实现可靠、“高效”。
 
zw84611:太感谢你了,我就需要这样的,一个小小的效果而已,我实际是要实现mov命令的
太谢谢你了。
 
有点扯淡吧? 你的字符串的脚本是什么语言的? 各种语言的函数名称还不一样呢!
vfp只能支持自己识别的函数/语法吧?
调用WHScript的COM,可以利用jscript的Eval函数实现解析,不过也是只能支持
js是别的函数或语法。

 
我已经用自己的方法实现了
速度提高了100倍以上
谢谢大家
 
老兄,能告诉我们怎么做的吗?
 
TO ZW84611
先逻辑表达式先转化为数学表达式,
然后再用一些计算数学表达式的控件
 
谢谢JSXJD的积极参与!
同时非常欣赏zhukewen对Delphi名声的维护!
如有人需要解决类似的问题可以找我.
 
顶部