我制作了一个程序,用于绘制给定函数的斜率字段。
如果我在源代码中插入函数,它的工作正常。
但我想把这个vb6项目变成一个exe文件。
因为我知道之前会发生这种情况,所以我之前做了一个输入功能的字段。该功能将以特殊形式输入。受AutoCAD中某些添加语言的启发,我制作了这种语言,并将其命名为DiffSol。
所以用户要做的是使用DiffSol语言在字段中编写一个函数。
问题在于它需要是vb中的一个真正的数学函数,以便针对不同的x和y进行评估。但我找不到将该语言转换为可以评估的vb数学函数的策略。
我要做的就是评估输入的功能15 * 31次。
这项工作看起来像是在制作编译器。这对我来说似乎很难。
有什么想法吗?
答案 0 :(得分:0)
简单的方法是将其转换为VBScript或JScript。
创建一个包含用VB编写的函数的类:
' +(a,b)
public function ADD(a as double, b as double) as double
add = a + b
end function
'/(a,b)
public function DIV(a as double, b as double) as double
div = a / b
end function
添加对Microsoft Script Control的引用:
Dim scr As ScriptControl: Set scr = New ScriptControl
scr.Language = "VBScript"
'// allow the script access to the class with the functions
scr.AddObject "DS", new diffsolClass
expr = " +(200, c(/(+(2,6), 2))) "
'//parse with simple substitution
parsed = expr
parsed = Replace$(parsed, "/", "DS.DIV")
parsed = Replace$(parsed, "+", "DS.ADD")
parsed = Replace$(parsed, "c", "cos") '//built in already
'//for some valid VB: DS.ADD(200, cos(DS.DIV(DS.ADD(2,6), 2)))
'//run it
MsgBox scr.Eval(parsed)
返回199.346356379136