Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 3 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.09
Prihlásený: 26.09.15
Príspevky: 23
Témy: 7
Príspevok NapísalOffline : 12.06.2014 14:51

Ahoj,

mam stiahnuty kod z netu pre vypocet matematickych formulacii cez string a potreboval by som implementovat aj vlastne metody z triedy tj. nie len class Math.

Stiahnuty kod:

Kód:
string code = "Math.Pow(23 + 48, 2) - (7.76 * 3.14)";
string result = Eval.StringEval(code);
Console.WriteLine("Results: " + result);

Eval Class
--------------------
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;
using System.CodeDom;
using System.CodeDom.Compiler;

public static class Eval
{
private static string funcprefix = "using System;\r\n"
+ "public delegate void Proc();\r\n"
+ "public class Wrapper { \r\n"
+ " public static object Set(string name, object value) { \r\n"
+ " AppDomain.CurrentDomain.SetData(name, value);\r\n"
+ " return value; \r\n"
+ " }\r\n"
+ " public static object Get(string name) { \r\n"
+ " return AppDomain.CurrentDomain.GetData(name);\r\n"
+ " }\r\n"
+ " public static object Invoke(Proc proc) { \r\n"
+ " proc();\r\n"
+ " return null; \r\n"
+ " }\r\n"
+ " public static object Eval() { return \r\n";
static string funcsuffix = "; \r\n} }";
public static string StringEval(string expr)
{
string program = funcprefix + expr + funcsuffix;
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = false;
cp.GenerateInMemory = true;

CompilerResults results =
CodeDomProvider.CreateProvider("C#").CompileAssemb lyFromSource(cp, new
string[]{program});
if ( results.Errors.HasErrors )
{
if ( results.Errors[0].ErrorNumber == "CS0029" )
return StringEval("Invoke(delegate { " + expr + "; })");
throw new Exception(results.Errors[0].ErrorText);
}
else
{
Assembly assm = results.CompiledAssembly;
Type target = assm.GetType("Wrapper");
MethodInfo method = target.GetMethod("Eval");
object result = method.Invoke(null, null);
return result == null ? null : result.ToString();
}
}
}


... a potreboval by som nieco na sposob

Kód:
 string code = "Test(Math.Pow(23 + 48, 2) - (7.76 * 3.14))";


Vopred vdaka za rozumnu radu.


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.09.13
Prihlásený: 04.12.14
Príspevky: 68
Témy: 1
Príspevok NapísalOffline : 13.06.2014 12:37

Zaujimava tema,
skusal som, da sa to.
Sprav si samostatnu libku kde naimplementujes svoji staticku triedu so svojimi statickymi matematickymi metodami.

uprav StringEval nasledovne (MyMathLib.dll je tvoja matematicka dll)
Kód:
public static string StringEval(string expr)
   {
      
      string program = funcprefix + expr + funcsuffix;
      CompilerParameters cp = new CompilerParameters();
      cp.ReferencedAssemblies.Add("MyMathLib.dll");
      cp.GenerateExecutable = false;
      cp.GenerateInMemory = true;

      CompilerResults results = CodeDomProvider.CreateProvider("C#").CompileAssemblyFromSource(cp, new
      string[] { program });
      if (results.Errors.HasErrors)
      {
         if (results.Errors[0].ErrorNumber == "CS0029")
            return StringEval("Invoke(delegate { " + expr + "; })");
         throw new Exception(results.Errors[0].ErrorText);
      }
      else
      {
         Assembly assm = results.CompiledAssembly;
         Type target = assm.GetType("Wrapper");
         MethodInfo method = target.GetMethod("Eval");
         object result = method.Invoke(null, null);
         return result == null ? null : result.ToString();
      }
   }


vola to potom budes nejako takto:
Kód:
string code = "MyMathLib.MyMathFunctions.TestFunction(Math.Pow(23 + 48, 2) - (7.76 * 3.14))";
Namespace.NazovTriedy.Funkcia


Naposledy upravil killer dňa 13.06.2014 16:57, celkovo upravené 1
Keď to dáš nabudúce do [code] bude to ešte lepšie


Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 23.04.09
Prihlásený: 26.09.15
Príspevky: 23
Témy: 7
Príspevok Napísal autor témyOffline : 13.06.2014 16:23

pisem si tvoj nick :) ...dobra praca, vdaka


Odpovedať na tému [ Príspevkov: 3 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. C# - Formulovanie matematickych operacii pomocou string

v Assembler, C, C++, Pascal, Java

0

348

26.09.2015 20:59

nico Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Vietnamskí lekári si pri operácii svietili mobilmi

v Novinky

11

461

07.06.2007 16:19

Lub0$ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. String

v PHP, ASP

2

615

19.04.2010 21:20

Antuanet Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java String

v Assembler, C, C++, Pascal, Java

4

1174

31.03.2010 22:00

ado21 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Connection String

v Technológia .NET

3

1634

10.09.2009 12:21

TJ Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. std::string

v Assembler, C, C++, Pascal, Java

2

688

01.01.2010 0:20

koso Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. String od do

v Delphi, Visual Basic

1

626

30.11.2009 18:55

ha2 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Java int = string

v Assembler, C, C++, Pascal, Java

4

505

17.02.2016 20:33

neutroN Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. pascal: string 255+

v Assembler, C, C++, Pascal, Java

4

558

03.02.2011 18:08

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Query string - vs _

v Internetový marketing, SEO, reklama

4

466

18.08.2012 22:41

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. c++ praca so string

v Assembler, C, C++, Pascal, Java

2

386

16.11.2014 13:17

mork4 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vysledok gettype stale string

v PHP, ASP

6

466

14.12.2010 17:05

Feko Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. [VYRIESENE] String do binary

v PHP, ASP

2

444

07.03.2009 15:57

Tominator Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. String = nieco z DB

v PHP, ASP

2

375

23.03.2012 14:49

exoomer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C++ string to float

v Assembler, C, C++, Pascal, Java

11

1044

27.08.2010 12:46

Progy Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. html adresa - cut string

v PHP, ASP

14

1739

14.05.2018 9:21

baumax Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra