Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
GA Sequencer - Globals.vb

Globals.vb

Caricato da: Totem
Scarica il programma completo

  1. Imports System.CodeDom.Compiler
  2. Module Globals
  3.  
  4.     Public Function CreateEvaluator(ByVal Expression As String) As Object
  5.         Dim Code As String = _
  6.         "Imports Microsoft.VisualBasic" & vbCrLf & _
  7.         "Imports System" & vbCrLf & _
  8.         "Imports System.Math" & vbCrLf & _
  9.         "Public Class Evaluator" & vbCrLf & _
  10.         "    Public Function Evaluate(ByVal X As Double) As Double" & vbCrLf & _
  11.         "        Return " & Expression.Replace(",", ".") & vbCrLf & _
  12.         "    End Function" & vbCrLf & _
  13.         "End Class" & vbCrLf
  14.  
  15.         Dim Parameters As New CodeDom.Compiler.CompilerParameters
  16.         With Parameters
  17.             .GenerateExecutable = False
  18. #If DEBUG Then
  19.             .IncludeDebugInformation = True
  20.             .TempFiles.KeepFiles = True
  21.             .GenerateInMemory = False
  22. #Else
  23.             .TreatWarningsAsErrors = True
  24.             .TempFiles.KeepFiles = False
  25.             .GenerateInMemory = True
  26. #End If
  27.             .ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
  28.             .ReferencedAssemblies.Add("System.dll")
  29.         End With
  30.  
  31.         Dim Provider As New VBCodeProvider
  32.         Dim CompResults As CompilerResults = Provider.CompileAssemblyFromSource(Parameters, Code)
  33.  
  34.         If CompResults.Errors.Count > 0 Then
  35.             Dim Msg As String = ""
  36.             For Each Err As CompilerError In CompResults.Errors
  37.                 Msg &= Err.ToString & vbCrLf
  38.             Next
  39.             Throw New ArgumentException("Espressione non valida!")
  40.         Else
  41.             Dim Asm As Reflection.Assembly = CompResults.CompiledAssembly
  42.             Dim Evaluator As Object = Asm.CreateInstance("Evaluator")
  43.  
  44.             Return Evaluator
  45.         End If
  46.     End Function
  47.  
  48.     Public Function Evaluate(ByVal Evaluator As Object, ByVal Value As Double) As Double
  49.         Dim Result As Object = Evaluator.Evaluate(Value)
  50.         Return CDbl(Result)
  51.     End Function
  52.  
  53. End Module