Solved

Evaluate String

Posted on 2004-08-28
7
498 Views
Last Modified: 2008-01-09
Hi.
In order to evaluate a string like "2+sin(3)" I've been using a great control called MSScript.
Unfortunately, the control can not calculate sine, cosine of big numbers of type double, also it can not calculate inverse trigonometrics like Asin(number).
I want to know if there is a method in the vb.NET library that can evaluate the string.
Do you know a free full version control that would do it better than MSScript ?

I know how to make that type of method myself, but it takes a lot of time.
[You don't need to comment about using excel or ...]
0
Comment
Question by:kouroshparsa
7 Comments
 
LVL 22

Accepted Solution

by:
mnasman earned 50 total points
ID: 11924886
0
 
LVL 2

Author Comment

by:kouroshparsa
ID: 11927578
Hi.
I tried this:
http://www.codeproject.com/vb/net/math_expression_evaluator.asp
but, when I try to run it, I don't see any window designer Form, may be part of the files are missing.
I appreciate the participation, and more ideas.
0
 
LVL 2

Author Comment

by:kouroshparsa
ID: 11927630
By the way, it is C# and I do not know C# very well. As I've said, I work on VB.NET
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 4

Expert Comment

by:Daniellus83
ID: 11929491
I wanted to convert this code for you, untill I found this code (VB.NET!!):

   http://www.codeproject.com/vb/net/math_expression_evaluator.asp

I tried it with: "arctan(100)"  and as you know the arc(+infity) converges to 1/2*Pi... and the program answered correct (something like 1,56...)

btw: the code works with "arc.." in stead of "a.." (like arcsin, instead of asin). This you can easily change; search the code for:

        Case "arcsin"
               Return (Math.Asin(CDbl(args(1))))

change it into

        Case "asin"
               Return (Math.Asin(CDbl(args(1))))

etc...


This code works realy great!!
0
 
LVL 4

Assisted Solution

by:Daniellus83
Daniellus83 earned 75 total points
ID: 11929517
kouroshparsa;

sorry I saw just that you already found the same project @ codeproject.com. But you got stuck I see...

You have to do this, to use the code into your porject;

> download again the project (see my link above)
> search in the downloaded archive for the file:

      Calc.vb

>copy this to your project and include it (via the solution explorer; rightclick on you project and choose "add existing item")

> Lets say you have this string: To_Be_Evaluated = "(arctan(100) + 5) / sin(3)", you would use the calc-module this way:

        Dim To_Be_Evaluated as String   =    "(arctan(100) + 5) / sin(3)"
        Dim Result_of_evaluation as Double
        Dim Calc As New mcCalc()

        Result_of_evaluation = Calc.evaluate(To_Be_Evaluated)

-------

thats it!! Try it,.. and maybe you like it!

Daniël
0
 
LVL 8

Expert Comment

by:wguerram
ID: 11933599
At the end of this thread i posted some code.

http://www.experts-exchange.om/Programming/Programming_Languages/Dot_Net/VB_DOT_NET/Q_21109510.
html

You could modify it at run time in oder to make calculations.

Add custom methods to the class at runtime like

        "Public Function Calculate() as double" + vbCrLf + _
                "Return 2+sin(3)" + vbCrLf + _
            "End Function" + vbCrLf + _

You would have to include System.Math

"Imports System.Math" + vbCrLf + _
0
 
LVL 2

Author Comment

by:kouroshparsa
ID: 11938498
Hi Daniellus83. How is it going?
I did it the way you said and I saw the result, though when I attempt to open the designer, I get the error "The document is opened by another project"   (that is not true)...Maybe after restarting my computer it'll go away.
As I've said it is C# and I am getting into vb.NET from vb6 and don't know c# much.
You talked about Asin(a big number), I talked about sin(big number)
The program you mentioned evaluates  sin(9999999999^10) to be 9.99999999E+10  which is impossible because
 -1<sin<1  (I figured that the problem is the Math library. Microsoft claims that sin(a number as double) but if you try something like msgbox(Math.sin(9999999999^10)) you get the same result !!!). And the program does not recognize errors if you enter "2+ss(5)" which is a syntax error, you get ="2"
I'm better off using MSScript...and there are formulas to calculate asin using an available functionality like atan in MSScript.
Well, thanks a lot for participating. I wish you best luck.


Hi wguerram.
The web URL you posted is invalid and I assume what you have, does not relate.
0

Featured Post

Maximize Your Threat Intelligence Reporting

Reporting is one of the most important and least talked about aspects of a world-class threat intelligence program. Here’s how to do it right.

Join & Write a Comment

Suggested Solutions

This tutorial demonstrates one way to create an application that runs without any Forms but still has a GUI presence via an Icon in the System Tray. The magic lies in Inheriting from the ApplicationContext Class and passing that to Application.Ru…
Well, all of us have seen the multiple EXCEL.EXE's in task manager that won't die even if you call the .close, .dispose methods. Try this method to kill any excels in memory. You can copy the kill function to create a check function and replace the …
This video gives you a great overview about bandwidth monitoring with SNMP and WMI with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're looking for how to monitor bandwidth using netflow or packet s…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

746 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now