作者TrueFeeling (昨日之死)
看板Visual_Basic
标题Re: [VB6 ] 计算机
时间Fri Jun 10 19:45:34 2005
不好意思,再问程式码部分
※ 引述《fumizuki (小狮子)》之铭言:
: ※ 引述《fumizuki (小狮子)》之铭言:
: : 是打算输入运算式後按enter再算出值?
: : 还是像一般计算机一样按下了加减乘除等於就会算出值?
: 哇哈!这种运算式真不好写...好不容易才试了出来...
: 用递回法写的,写了一长串,看起来颇复杂的...~.~
: Private Sub Command1_Click(Index As Integer)
: Text1.Text = Text1.Text & Index
: End Sub
: Private Sub Command2_Click(Index As Integer)
: Text1.Text = Text1.Text & Command2(Index).Caption
: End Sub
: Private Sub Command3_Click()
: Label1.Caption = Eval(Text1.Text)
: End Sub
: Function Eval(s As String)
方程式名:Eval ?
方程式参数s设为字串?
: Dim p As Integer, op1 As String, op2 As String, o As String
: Static c As Integer: c = c + 1
: If c = 1 Then s = Replace(s, " ", "")
请问上面这段,c的作用是?
: p = InStr(s, "+")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) + Eval(op2): GoTo EndProc
我猜的意思是:
If p > 0 -->如果有+号的话,然後执行SplitProc,不过後面就不知道为什麽
: If s Like "-*" Then p = 2 Else p = 1
我猜的意思是:
如果字串s里面是-号後面是一串字元的话,然後後面还是看不懂
: p = InStr(p, s, "-")
: If p > 0 Then
如果有减号的话,然後
: op1 = Mid(s, p - 1, 1)
op1=字串中,减号的前一个字元
: If op1 = "+" Then
这边看不懂,为什麽op1刚刚代表减号,现在为什麽代表加号
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) + Eval(op2): GoTo EndProc
p = p-1 ==>看不懂,後面也看不懂
: ElseIf op1 = "-" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) - Eval(op2): GoTo EndProc
: ElseIf op1 = "*" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) * Eval(op2): GoTo EndProc
: ElseIf op1 = "/" Then
: p = p - 1: GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
: Else
: GoSub SplitProc: Eval = Eval(op1) + Eval("-" & op2): GoTo EndProc
: End If
: End If
: p = InStr(s, "*")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) * Eval(op2): GoTo EndProc
如果字串中有*号,.....
: p = InStr(s, "/")
: If p > 0 Then GoSub SplitProc: Eval = Eval(op1) / Eval(op2): GoTo EndProc
如果字串中有/号....
: Eval = Val(s)
这里传回的模式也看不懂
: EndProc:
: c = c - 1: Exit Function
c = c - 1的作用是?
: SplitProc:
: op1 = Left(s, p - 1): op2 = Mid(s, p + 1): Return
将字串拆成2份(以p的位置为分界点)
第1份是p的左边
第2份是p的右边
: End Function
--
少年读书,如隙中窥月;
中年读书,如庭中望月;
老年读书,如台上玩月。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.162.90.149