Code: Select all
var1 := "+1"
var2 := 5
var3 := var2 var1 ; should get 6
MsgBox % var3
Code: Select all
var1 := "+1"
var2 := 5
var3 := var2 var1 ; should get 6
MsgBox % var3
Code: Select all
#SingleInstance, Force
var1 := "+1"
var2 := 5
var3 := var2 var1
ScriptControl := ComObjCreate("ScriptControl")
ScriptControl.Language := "VBScript"
MsgBox, % ScriptControl.Eval(var3)
Code: Select all
;- eval from user Laszlo
;- https://autohotkey.com/board/topic/24114-popup-calculator-expression-evaluator/
v1 := "+1"
v2 := 5
v3 := eval(v2 v1)
msgBox, %v3%
return
;-------------------------------------
Eval(x)
{
StringGetPos i, x, +, R
StringGetPos j, x, -, R
If (i > j)
Return Left(x,i)+Right(x,i)
If (j > i)
Return Left(x,j)-Right(x,j)
StringGetPos i, x, *, R
StringGetPos j, x, /, R
If (i > j)
Return Left(x,i)*Right(x,i)
If (j > i)
Return Left(x,j)/Right(x,j)
Return x
}
Left(x,i)
{
StringLeft x, x, i
Return Eval(x)
}
Right(x,i)
{
StringTrimLeft x, x, i+1
Return Eval(x)
}
;=== end function Laszlo ==========
Code: Select all
#SingleInstance, Force
MsgBox, % Eval("5+5")
Eval(x) {
i := InStr(x, "+",, 0) - 1
j := InStr(x, "-",, 0) - 1
If (i > j) {
return Eval(SubStr(x, 1, i)) + Eval(SubStr(x, 0, i + 1))
}
If (j > i) {
return Eval(SubStr(x, 1, j)) - Eval(SubStr(x, 0, j + 1))
}
i := InStr(x, "*",, 0) - 1
j := InStr(x, "/",, 0) - 1
If (i > j) {
return Eval(SubStr(x, 1, i)) * Eval(SubStr(x, 0, i + 1))
}
If (j > i) {
return Eval(SubStr(x, 1, j)) / Eval(SubStr(x, 0, i + 1))
}
return x
}
Code: Select all
#SingleInstance, Force
example=5*3
InputBox,c,calculate +-/*,Input> 4+3+5 ... etc, ,500,200,10,100,, Timeout,%example%
if c=
return
if ErrorLevel
return
d:=eval(c)
msgbox,%d%
return
;MsgBox, % Eval("5+5")
Eval(x) {
i := InStr(x, "+",, 0) - 1
j := InStr(x, "-",, 0) - 1
If (i > j) {
return Eval(SubStr(x, 1, i)) + Eval(SubStr(x, 0, i + 1))
}
If (j > i) {
return Eval(SubStr(x, 1, j)) - Eval(SubStr(x, 0, j + 1))
}
i := InStr(x, "*",, 0) - 1
j := InStr(x, "/",, 0) - 1
If (i > j) {
return Eval(SubStr(x, 1, i)) * Eval(SubStr(x, 0, i + 1))
}
If (j > i) {
return Eval(SubStr(x, 1, j)) / Eval(SubStr(x, 0, i + 1))
}
return x
}
Users browsing this forum: jaka1, marypoppins_1, Rohwedder and 133 guests