I'm attempting a go at the calculator competition (see this thread http://www.basic4ppc.com/forum/showthread.php?t=914). In doing so I would like to take what I believe is a rather unique approach, however I am already experiencing problems and would like your help. The problem is this.... Code: x = 2 + 3MsgBox(x) Works like a charm, giving 5 as the result (can't really make it more simple than that) But now when I do this instead... Code: x = 2 & chr(43) & 3MsgBox(x) I get 2+3 instead of the desired mathematical result. So is there a way of forcing the compiler to treat the expression as an equation rather than a string? Regards, RandomCoder
I personally don't like the weak typing of B4PPC but you can get it to work for you. Code: x = 2 & Chr(43) & 3 & "*" & 4 ' build a valid expression y = 0 + x ' coercion forces evaluation of the stringMsgbox(y) ' success If you use this then you will need an error handler unless you can parse the string for mathematical correctness first. EDIT: Or use Isnumber() on the string and not try the coercion if it returns false. This approach supports */+- and ^ but not functions such as abs() etc. EDIT EDIT: Actually Isnumber() isn't reliable in this instance. I don't know why I thought it would be. Stick to the error handler approach!
This trick is dangerous. I recommend you to use the code sample in the link I've posted instead. It will only work if evaluated once. This code for example will fail on the second time: Code: Sub App_Start For i = 1 To 2 x = "2*5+4" y = 0 + x Msgbox(y) NextEnd Sub The reason it fails is that there is an optimization process that optimizes calculations after the first calculation.
Pity - I thought that it might be quite useful:sign0148: EDIT: Actually this probably explains some inconsistent results and inexplicable errors I have encountered trying some fairly complicated string maniipulation where I was (rather less blatently than above) using B4PPCs apparent use of weak typing to reduce the amount of code.
Thanks for the input guys, I had already tried using a variety of amplisand, brackets and single quotes but all to no avail. With some help from a friend of mine he has got it working using the following method... Code: x=(2 Chr(43) 3)MsgBox(x) I must admit that I had already tried this without the brackets and all I got was a value of 2, but with the brackets it's evaluated correctly and produces a value of 5. Thanks for the help. Regards, RandomCoder
This will not be a proper solution too. It will fail on the second call. Try using the Eval method that is implemented in this link: http://www.basic4ppc.com/forum/showthread.php?t=394