Solved

compile and execute in runtime with codecom and scripting with vb.net

Posted on 2014-01-08
8
544 Views
Last Modified: 2014-02-16
Im gonna try to explain my question, please be patient because my english sucks

I would like to know if it is possible to compile and run elements of the code of my project in runtime?

For example in my project I have this loop
            Do
                id = id + 1 
                bandera = bandera + 1
                arreglo = valvula(iteraciones(id).indice)
            Loop Until (bandera = 100)

Open in new window

bandera and id are variables declared in a vb standard module in my project
arreglo it is an array declared in a vb standard module in my project
valvula is a function declared in a vb standard module in my project
iteraciones it is a "dictionary of" declared in a vb standard module in my project

I would like to know if it is possible to storage this code in a string and compile and execute that string in a runtime mode?
------------------------------------------------------------------------------------------------------------------------------
My first option was to use codecom

eric moreau send me this nice example: http://emoreau.com/Entries/Articles/2011/07/Compiling-code-on-the-fly.aspx it works, but I cannot use it because I dont know how to call functions, variables or custom class declared outside the namespace of the dynamic code

Thats way I  tried with scripting in vb.net (using msscriptcontrol) with this example:
Option Strict Off
Option Explicit On
Imports System.Collections.Generic
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim VBScript As MSScriptControl.ScriptControl
    Public valor As Double
    Public VBCode As String
    Public otro(2) As Double
    Public nuevo As New Dictionary(Of Integer, nodo)
    Public prueba As New nodo

    Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
        On Error GoTo line1
        VBScript.AddCode(VBCode)
        Exit Sub
line1:
        MsgBox(Err.Number & Err.Description, MsgBoxStyle.Critical, "error")
        Err.Clear()
    End Sub

    Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
        Dim prueba As New nodo
        otro(0) = 0
        prueba.uno = 1
        prueba.dos = 1
        nuevo.Add(1, prueba)
        VBCode = "form1.otro = form1.valvula(1,2,3)" & vbCr & _
"form1.valor = form1.funcion(13)" & vbCr & _
                 "MsgBox(Form1.valor)"
        VBScript = New MSScriptControl.ScriptControl
        VBScript.Language = "VBScript"
        VBScript.AddObject("Form1", Me)
        VBScript.AllowUI = True
    End Sub

    Function funcion(ByVal valores As Double) As Double
        valores = valores + 1
        funcion2()
        Return valores
    End Function

    Function valvula(ByVal dato1 As Integer, ByVal dato2 As Integer, ByVal dato3 As Integer) As Double()
        dato1 = dato1 + 1
        dato2 = dato2 + 1
        dato3 = dato3 + 1
        valvula = New Double() {dato1, dato2, dato3}
    End Function
End Class

Public Class nodo
    Public uno As Integer
    Public dos As Integer
End Class

Module Module1
    Public variable1 As Double = 120
    Public Sub funcion2()
        variable1 = variable1 + 1
        MsgBox(variable1)
    End Sub
End Module

Open in new window


It works to, but the problem is that when I try to use code lines like this:
"form1.otro(0)=1" or "form1.dictionary(index).id = 1"  the program cannot compile that kind of lines.
------------------------------------------------------------------------------------------


I would like to know what is the best option to use dynamic code

 if I use codecom if there is a way to call  variables, functions etc.. declared in my program from the dynamic code

And if I use scripting with vb.net why when I try to use lines like "form1.otro(0)=1" or "form1.dictionary(index).id = 1"  the program cannot compile that kind of lines.
0
Comment
Question by:altariamx2003
  • 5
  • 2
8 Comments
 
LVL 96

Expert Comment

by:Bob Learned
Comment Utility
eric moreau send me this nice example: http://emoreau.com/Entries/Articles/2011/07/Compiling-code-on-the-fly.aspx it works, but I cannot use it because I dont know how to call functions, variables or custom class declared outside the namespace of the dynamic code

Can you explain what you mean this statement?  Are you saying that you would be creating dynamic code that would be calling to static code elements?
0
 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
Are you attempting to write some sort of parser ?

eg.  Your user enters things like:
Display 1 + 2*96 - 3*Foo(9)

and then your program works out what the resulting number will be (in this case 42) and then shows a message box with 'the answer is 42'

Or do you just need the user to enter eg. a number within a range and then you call a specific function (1 means square, 2 means square root....) ?
0
 

Author Comment

by:altariamx2003
Comment Utility
yes Eric you are right

I want to create dynamic code that will call static code elements of my program (like variables or functions) to compile and execute in runtime or at least that is the idea

Im sorry if in the last post I did dont explain myselft better
0
 

Author Comment

by:altariamx2003
Comment Utility
Hi Andy thanks to answer this post

What I need is that my program create dynamic code that will call statis code elements of my projects like variables, arrays, subroutines, functions etc... not just a specific function.

I need that my program create in a string for example
            Do
                id = id + 1 
                bandera = bandera + 1
                arreglo = valvula(iteraciones(id).indice)
            Loop Until (bandera = 100)

Open in new window

or
             Do
                id = id + 1 
                cadena(0) = bandera + 1
                arreglo = tanque(iteraciones(id).indice)
            Loop Until (cadena(0) = 100)

Open in new window

Use this dynamic code (that call static code elements) of my project and compile and execute it in runtime
0
6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

 
LVL 44

Expert Comment

by:AndyAinscow
Comment Utility
I'm going to bow out - that is a MASSIVE job (unless I completely misunderstand, and in that case my comments wouldn't be of use anyway).
0
 

Author Comment

by:altariamx2003
Comment Utility
About scripting in .net what I need to know is why when I try to compile lines like "form1.otro = form1.valvula(1,2,3)" the program works

and when I try to use lines like "form1.otro = form1.valvula(myarray(0),2,3)" the program cannot compile this kind of lines
0
 

Accepted Solution

by:
altariamx2003 earned 0 total points
Comment Utility
I need to apologies with eric moreu

He tried to help me in my previous post, but I did not understand his example until now

I found the way  to solve this big problem and all credits goes to eric, because without his example the solution that I found was not posible
0
 

Author Closing Comment

by:altariamx2003
Comment Utility
I found the solution by mysself

and also

I need to apologies with eric moreu

He tried to help me in my previous post, but I did not understand his example until now

I found the way  to solve this big problem and all credits goes to eric, because without his example the solution that I found was not posible
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

It is a general practice to get rid of old user profiles on a computer  in a LAN environment. As I have been working with a company in a LAN environment where users move from one place to some other place at times. This will make many user profil…
Batch, VBS, and scripts in general are incredibly useful for repetitive tasks.  Some tasks can take a while to complete and it can be annoying to check back only to discover that your script finished 5 minutes ago.  Some scripts may complete nearly …
Learn the basics of if, else, and elif statements in Python 2.7. Use "if" statements to test a specified condition.: The structure of an if statement is as follows: (CODE) Use "else" statements to allow the execution of an alternative, if the …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

743 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

18 Experts available now in Live!

Get 1:1 Help Now