GO7 Posted July 5, 2004 Share Posted July 5, 2004 Hi all ! Here is my problem : I want to evaluate a string but I can't make it work with Eval() or Number(). Here is an example : $a = 2 $b = 3 $eq = "a^b" ;THOSE 3 LINES CANNOT BE CHANGED ! $eq = StringReplace($eq,"a",$a) $eq = StringReplace($eq,"b",$b) $res = Number($eq) msgbox(0,"Evaluation",$eq & "=" & $res);will produce 2^3=2 The problem is that the number() fonction automatically stops when a character is detected, like the "^" in "2^3" Number(2^3) will produce the right answer (8) but Number("2^3") equals Number("2") = 2 Anyone know how to correctly evaluate a random equation ? Thanks a lot in advance Link to comment Share on other sites More sharing options...
CyberSlug Posted July 5, 2004 Share Posted July 5, 2004 (edited) Eval and Number probably do not work the way you expect; you cannot evaluate an arithmetic expression with those functions. Look at the documentation examples for those functions to see their intended use.Here's what you need to do:1) Write out the string to a secondary AutoIt script that runs.2) The secondary AutoIt script writes its output to a temp file.3) Your main script gets the value from the temp file and deletes the secondary script and temp file$a = 2 $b = 3 $eq = $a & "^" & $b $AUTOIT = '"C:\Program Files\AutoIt3\AutoIt3.exe"' FileWriteLine("C:\tempEval.au3", '$result = ' & $eq) FileWriteLine("C:\tempEval.au3", 'FileWriteLine("C:\tempResult.txt", $result)') RunWait($AUTOIT & "C:\tempEval.au3") $eval = FileReadLine("C:\tempResult.txt") FileDelete("C:\tempResult.txt") FileDelete("C:\tempEval.au3") MsgBox(4096,"", $eval) Edited July 5, 2004 by CyberSlug Use Mozilla | Take a look at My Disorganized AutoIt stuff | Very very old: AutoBuilder 11 Jan 2005 prototype I need to update my sig! Link to comment Share on other sites More sharing options...
GO7 Posted July 5, 2004 Author Share Posted July 5, 2004 Thanks ! It seems to work !But it's a pity that there's no other way to do this arithmetic evaluation... Eval() or Number() should do the job...I'm going to use this script to find an answer to a random equation... So I need to brute force it...With so much things to do for each test (multiple nested for 0 to 9 next) my script won't be very effective and way to sloooooooooow Anyway thanks for your help ! Link to comment Share on other sites More sharing options...
Nutster Posted July 6, 2004 Share Posted July 6, 2004 I have Exec on my to do list. It will determine a value using variables, operators and certain functions. It will not allow you to call potentially destructive functions, like RegDelete(), but will allow purely math functions like Sin(). It is a little ways down the list, after a bunch of things, like work. David NuttallNuttall Computer Consulting An Aquarius born during the Age of Aquarius AutoIt allows me to re-invent the wheel so much faster. I'm off to write a wizard, a wonderful wizard of odd... Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now