首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

=== 关于变量替换用于计算的一个有关问题 ===

2012-01-22 
关于变量替换用于计算的一个问题 一直没搞清下面的情形该如何处理,请各位帮帮忙:

=== 关于变量替换用于计算的一个问题 ===
一直没搞清下面的情形该如何处理,请各位帮帮忙:

=====================
Dim   NumCount,   Num1,   Num2,   Num3,   Num4,   Num5,   Num6,   Num7,   Num8   As   Integer
Dim   NumString   As   String

'把变化的变量(或是表字段)名称计算式存入NumString   (注:是名称,且计算式是根据实际而变化的)
NumString   =   "Num2   +   Num3   +   2   *   Num4   -   (Num5   +   Num6)   *   0.17 "

'然后对变量进行赋值
Num1   =   10
Num2   =   20
Num3   =   30
...
Num8   =   80

=====================

请问各位:如何取得   NumString   的计算值?

[解决办法]
有这个必要么?
你要分析这个字符串有哪些是变量,哪些是运算符号,哪些是数字,然后通过对应来进行计算。
例如
获取一个字符串如 "Num2 "
if 字符串 = "Num2 " then
结果变量 = Num2 等运算。
我觉得没有必要。

[解决办法]
你可以自已做一个表达式解析器,如果是计算机专业的话,那在编译原理里面是讲得清清楚楚的。
[解决办法]
呵呵,
[解决办法]
我也碰到过,我不会,等答案!
[解决办法]
不懂..帮顶
[解决办法]
我假设你的公式是这样的.
'NumString = "Num2 + Num3 + 2 * Num4 - (Num5 + Num6) * 0.17 "
'NumString = "Num1 * Num4 "
'NumString = "Num1 * 2+ Num3 / 2 "
然后循环判断
For i = 1 To Grid1.Rows - 1
For k = 0 To Grid1.Cols - 1
If j(i, k) <> 0 Then
Select Case k
Case 0
If j(i, k + 3) <> 0 Then
j(i, 6) = j(i, k) * j(i, k + 3)
Exit For
End If
If j(i, k + 2) <> 0 Then
j(i, 6) = j(i, k) * 2 + j(i, k + 2) / 2
Exit For
End If
Case 1
If j(i, k + 1) <> 0 And j(i, k + 2) <> 0 And j(i, k + 3) <> 0 And j(i, k + 4) <> 0 Then
j(i, 6) = j(i, k) + j(i, k + 1) + 2 * j(i, k + 2) - (j(i, k + 3) + j(i, k + 4)) * 0.17 '-
Exit For
End If
End Select
End If
Next
Next
你看行吗?是你要的吗?
[解决办法]
dim dt as new datatable()
dim NumString as string= "Num2 + Num3 + 2 * Num4 - (Num5 + Num6) * 0.17 "
dim cl1=new DataColumn( "Num1 ",getType(System.String))
dim cl2=new DataColumn( "Num2 ",getType(System.String))
dim cl3=new DataColumn( "Num3 ",getType(System.String))
dim cl4=new DataColumn( "Num4 ",getType(System.String))
dim cl5=new DataColumn( "Num5 ",getType(System.String))
dim cl6=new DataColumn( "Num6 ",getType(System.String))
dim result=new DataColumn( "result ",getType(System.String))
result.Expression=NumString



[解决办法]
定解:用堆栈的思想去做...
[解决办法]
楼主问题解决了吗?我现在也在解决和你这个类似的问题.也不清楚该怎么办.
------解决方案--------------------


Dim Vbs As New MSScriptControl.ScriptControl
Private Sub Command1_Click()
Vbs.Language = "vbs "
MsgBox Vbs.Eval( "1*2*233434 ")
End Sub
[解决办法]
http://www.newasp.net/tech/net/12348.html

看看,或许有帮助

热点排行