Open Hanqnero opened 3 years ago
Also, in the debug output there's an exception System.Runtime.InteropServices.COMException
whenever the mathematical expression changes.
Having the same issue.
Same issues here. Seems like an external dependency is causing problems.
I have been investigating a bit this bug, as I also was interested in making Kalq functional as a more mathematically complete alternative to Launchy's calculator.
I could track down the bug to this line: https://github.com/jaywick/kalq/blob/f541e05769a976fa14b1b833cdcc887923ee6f59/Classes/Calculation.vb#L43
interpreter.AddCode(script.Code)
Where interpreter
is:
' MS Script Control object, the main engine of kalq
Private interpreter As New MSScriptControl.ScriptControl
By looking online (it's been decades since I last coded in VB), it seems the issue stems from either a missing, corrupted, misregistered or wrong architecture (project needs to be set in 32-bits mode) msscript.ocx
dll. So yes it's difficult to make it work not only in debug, but also in release, because you have to ship the correct dll and it seems it only exists in 32 bits, it's been long deprecated.
So the solution would be to replace this approach with a real math expression evaluator engine, which would also be much safer, as currently Kalq relies on executing any VBscript expression, not just math! So theoretically a nefarious actor could make you execute anything by hijacking your copy/paste (which is possible from websites!).
I had a quick look but it seems math engines are rare for VB, I found this incomplete one but it's much more verbose and complex to use: https://www.jefflewis.net/programming-vb-calculator.html#ModuleMathParser
Given all these limitations and difficulties, I decided to try alternative solutions, and for now I have settled for Qalculate (a much more mature and actively maintained math engine and GUI, much more powerful than Kalq even when it was working), combined with Clavier+ to create a hotkey to mimic how Launchy can be summoned with a simple ALT-LEFT+SPACE hotkey. So far, this approach works wonderfully well, and I get a very powerful math engine, and less memory footprint since it is launched only when I summon it (instead of having a service always running in the background as with Launchy or Kalq), so I likely won't try to fix Kalq as it is a less optimal solution in any case.
The Calculator doesn't calculate anything, result always ends with "= ?". If i try to copy the result, it will copy не число (that means Not a Number).