Avatar billede doomstone-dk- Nybegynder
04. april 2009 - 20:59 Der er 6 kommentarer og
1 løsning

String med formel, kan man udregne den?

Jeg har en string som f.eks. "23.4 * 3 - 3".
Er der en måde jeg kan få C# til at udregne dette for mig uden jeg skal til at lave en class om gør det?
Avatar billede arne_v Ekspert
04. april 2009 - 21:54 #1
Ikke sådan lige umiddelbart.

Men der skal ikke så meget kode til. Man kan nemlig genbruge JScript eval.

Eksempel:

using System;
using System.Reflection;
using System.CodeDom.Compiler;

using Microsoft.JScript;

namespace E
{
    public interface IJS
    {
        double Eval(string expr);
    }
    public class JS
    {
        private static IJS engine;
        static JS()
        {
            string src = "import System; import E; public class C implements IJS { public function Eval(expr : String) : Double { return eval(expr); } }";
            CodeDomProvider comp = new JScriptCodeProvider();
            CompilerParameters param = new CompilerParameters();
            param.GenerateInMemory = true;
            param.ReferencedAssemblies.Add("System.dll");
            param.ReferencedAssemblies.Add(System.Reflection.Assembly.GetExecutingAssembly().Location);
            CompilerResults res = comp.CompileAssemblyFromSource(param, src);
            Assembly asm = res.CompiledAssembly;
            engine = (IJS)asm.CreateInstance("C");
        }
        public static double Eval(string expr)
        {
            return engine.Eval(expr);
        }
    }
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(JS.Eval("23.4 * 3 - 3"));
            Console.ReadKey();
        }
    }
}
Avatar billede doomstone-dk- Nybegynder
05. april 2009 - 11:18 #2
Det virkede når jeg bare copy pastede det ind i et nye projekt, men da jeg prøvede at putte det ind i mit projekt bliver jeg ved med at få denne fejl
"Could not load file or assembly 'file:///C:\Users\Claudia\AppData\Local\Temp\h4qqiocx.dll' or one of its dependencies. The system cannot find the file specified."
Kan ikke lie se hvad det er for en dependencies jeg skulle mangle.

Du må meget gerne skrive noget som et svar, da din kode virker :D bare mig der er lidt af en hat åbenbardt :D
Avatar billede arne_v Ekspert
06. april 2009 - 04:27 #3
Er det en ASP.NET web app?
Avatar billede doomstone-dk- Nybegynder
15. april 2009 - 16:41 #4
Nej det er et C# program, windows forms.
Avatar billede doomstone-dk- Nybegynder
17. april 2009 - 15:10 #5
Grunde er at jeg har et system som skal kunne sortere efter et point system.
Min bruger skriger så hvordan han ænsker at pointne skal udregnes.
f.eks. kan han skrive
[Profit]/[KM] hvislket vil sige at brugeren gerne vil have poinet til at være profit pr kilometer.
Avatar billede doomstone-dk- Nybegynder
17. april 2009 - 15:13 #6
Glemte lie at sige at meningen så at at min program får denne sing igennem og erstatter.

f.eks.
[Profit]/[KM]
Er Stat [Profit] med 30.0
30.0/[KM]
Erstat [KM] med 20.0
30.0/20.0

Dette skulle den så meget gerne kunne udregne til at give "1,5"
Avatar billede doomstone-dk- Nybegynder
20. juli 2009 - 12:58 #7
Lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester