Страница: 1 |
|
Вопрос: Условие или функция из файла
|
Добавлено: 27.09.09 08:58
|
|
Автор вопроса: ☺♣FIO♣☺
|
У меня есть файл в котором две строки:
X=25
IF X>20 THEN MSGBOX("") ELSE MSGBOX("OK")
Прога их читает и должна выполнить. Как можно это сделать?
Ответить
|
Номер ответа: 11 Автор ответа:
Nickola

Вопросов: 2 Ответов: 12
|
Профиль | | #11
|
Добавлено: 14.01.10 07:41
|
Порылся в MSDN и нашел такой код
Генерирует класс, записывает в выбранном формате (vb,c#,js), компилирует и запускает на выполнение
-
- Imports System
- Imports System.CodeDom
- Imports System.CodeDom.Compiler
- Imports System.Collections
- Imports System.ComponentModel
- Imports System.Diagnostics
- Imports System.Drawing
- Imports System.IO
- Imports System.Windows.Forms
- Imports Microsoft.CSharp
- Imports Microsoft.VisualBasic
- Imports Microsoft.JScript
-
- Namespace CodeDOMExample
-
- Class CodeDomExample
-
-
- Public Shared Function BuildHelloWorldGraph() As CodeCompileUnit
-
-
-
- Dim compileUnit As New CodeCompileUnit()
-
-
- Dim samples As New CodeNamespace("Samples")
-
-
- compileUnit.Namespaces.Add(samples)
-
-
- samples.Imports.Add(New CodeNamespaceImport("System"))
-
-
- Dim class1 As New CodeTypeDeclaration("Class1")
-
-
- samples.Types.Add(class1)
-
-
- Dim start As New CodeEntryPointMethod()
-
-
- Dim csSystemConsoleType As New CodeTypeReferenceExpression( _
- "System.Console")
-
-
- Dim cs1 As New CodeMethodInvokeExpression( _
- csSystemConsoleType, "WriteLine", _
- New CodePrimitiveExpression("Hello World!"))
-
-
- start.Statements.Add(cs1)
-
-
- Dim cs2 As New CodeMethodInvokeExpression( _
- csSystemConsoleType, "WriteLine", _
- New CodePrimitiveExpression("Press the Enter key to continue."))
-
-
- start.Statements.Add(cs2)
-
-
- Dim csReadLine As New CodeMethodInvokeExpression( _
- csSystemConsoleType, "ReadLine")
-
-
- start.Statements.Add(csReadLine)
-
-
-
- class1.Members.Add(start)
-
- Return compileUnit
- End Function
-
- Public Shared Sub GenerateCode(ByVal provider As CodeDomProvider, ByVal compileunit As CodeCompileUnit)
-
-
-
- Dim sourceFile As String
- If provider.FileExtension.StartsWith(".") Then
- sourceFile = "TestGraph" + provider.FileExtension
- Else
- sourceFile = "TestGraph." + provider.FileExtension
- End If
-
-
-
- Dim tw As New IndentedTextWriter(New StreamWriter(sourceFile, False), " ")
-
- provider.GenerateCodeFromCompileUnit(compileunit, tw, New CodeGeneratorOptions())
-
- tw.Close()
- End Sub
-
- Public Shared Function CompileCode(ByVal provider As CodeDomProvider, _
- ByVal sourceFile As String, _
- ByVal exeFile As String) As CompilerResults
-
-
-
- Dim referenceAssemblies As String() = {"System.dll"}
- Dim cp As New CompilerParameters(referenceAssemblies, exeFile, False)
-
-
- cp.GenerateExecutable = True
-
-
- Dim cr As CompilerResults = provider.CompileAssemblyFromFile(cp, _
- sourceFile)
-
- Return cr
- End Function
- End Class
-
- Public Class CodeDomExampleForm
- Inherits System.Windows.Forms.Form
- Private run_button As New System.Windows.Forms.Button()
- Private compile_button As New System.Windows.Forms.Button()
- Private generate_button As New System.Windows.Forms.Button()
- Private textBox1 As New System.Windows.Forms.TextBox()
- Private comboBox1 As New System.Windows.Forms.ComboBox()
- Private label1 As New System.Windows.Forms.Label()
-
- Private Sub generate_button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim provider As CodeDomProvider = GetCurrentProvider()
- CodeDomExample.GenerateCode(provider, CodeDomExample.BuildHelloWorldGraph())
-
-
-
- Dim sourceFile As String
- If provider.FileExtension.StartsWith(".") Then
- sourceFile = "TestGraph" + provider.FileExtension
- Else
- sourceFile = "TestGraph." + provider.FileExtension
- End If
-
-
-
- Dim sr As New StreamReader(sourceFile)
- textBox1.Text = sr.ReadToEnd()
- sr.Close()
- End Sub
-
- Private Sub compile_button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
- Dim provider As CodeDomProvider = GetCurrentProvider()
-
-
-
- Dim sourceFile As String
- If provider.FileExtension.StartsWith(".") Then
- sourceFile = "TestGraph" + provider.FileExtension
- Else
- sourceFile = "TestGraph." + provider.FileExtension
- End If
-
- Dim cr As CompilerResults = CodeDomExample.CompileCode(provider, _
- sourceFile, _
- "TestGraph.EXE")
-
- If cr.Errors.Count > 0 Then
-
- textBox1.Text = "Errors encountered while building " + _
- sourceFile + " into " + _
- cr.PathToAssembly + ": " + ControlChars.CrLf
-
- Dim ce As System.CodeDom.Compiler.CompilerError
- For Each ce In cr.Errors
- textBox1.AppendText(ce.ToString() + ControlChars.CrLf)
- Next ce
- run_button.Enabled = False
- Else
- textBox1.Text = "Source " + sourceFile + " built into " + _
- cr.PathToAssembly + " with no errors."
- run_button.Enabled = True
- End If
- End Sub
-
- Private Sub run_button_Click(ByVal sender As Object, _
- ByVal e As System.EventArgs)
-
- Process.Start("TestGraph.EXE")
- End Sub
-
- Private Function GetCurrentProvider() As CodeDomProvider
-
- Dim provider As CodeDomProvider
- Select Case CStr(Me.comboBox1.SelectedItem)
- Case "CSharp"
- provider = New CSharpCodeProvider()
- Case "Visual Basic"
- provider = New VBCodeProvider()
- Case "JScript"
- provider = New JScriptCodeProvider()
- Case Else
- provider = New CSharpCodeProvider()
- End Select
- Return provider
- End Function
-
- Public Sub New()
- Me.SuspendLayout()
-
- Me.label1.Location = New System.Drawing.Point(395, 20)
- Me.label1.Size = New Size(180, 22)
- Me.label1.Text = "Select a programming language:"
-
- Me.comboBox1.Location = New System.Drawing.Point(560, 16)
- Me.comboBox1.Size = New Size(190, 23)
- Me.comboBox1.Name = "comboBox1"
- Me.comboBox1.Items.AddRange(New String() {"CSharp", "Visual Basic", "JScript"})
- Me.comboBox1.Anchor = System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right Or System.Windows.Forms.AnchorStyles.Top
- Me.comboBox1.SelectedIndex = 0
-
- Me.generate_button.Location = New System.Drawing.Point(8, 16)
- Me.generate_button.Name = "generate_button"
- Me.generate_button.Size = New System.Drawing.Size(120, 23)
- Me.generate_button.Text = "Generate Code"
- AddHandler generate_button.Click, AddressOf Me.generate_button_Click
-
- Me.compile_button.Location = New System.Drawing.Point(136, 16)
- Me.compile_button.Name = "compile_button"
- Me.compile_button.Size = New System.Drawing.Size(120, 23)
- Me.compile_button.Text = "Compile"
- AddHandler compile_button.Click, AddressOf Me.compile_button_Click
-
- Me.run_button.Enabled = False
- Me.run_button.Location = New System.Drawing.Point(264, 16)
- Me.run_button.Name = "run_button"
- Me.run_button.Size = New System.Drawing.Size(120, 23)
- Me.run_button.Text = "Run"
- AddHandler run_button.Click, AddressOf Me.run_button_Click
-
- Me.textBox1.Anchor = System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right
- Me.textBox1.Location = New System.Drawing.Point(8, 48)
- Me.textBox1.Multiline = True
- Me.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
- Me.textBox1.Name = "textBox1"
- Me.textBox1.Size = New System.Drawing.Size(744, 280)
- Me.textBox1.Text = ""
-
- Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
- Me.ClientSize = New System.Drawing.Size(768, 340)
- Me.MinimumSize = New System.Drawing.Size(750, 340)
- Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.textBox1, _
- Me.run_button, Me.compile_button, Me.generate_button, _
- Me.comboBox1, Me.label1})
- Me.Name = "CodeDomExampleForm"
- Me.Text = "CodeDom Hello World Example"
- Me.ResumeLayout(False)
- End Sub
-
- Protected Overloads Sub Dispose(ByVal disposing As Boolean)
- MyBase.Dispose(disposing)
- End Sub
-
- <STAThread()> _
- Shared Sub Main()
- Application.Run(New CodeDomExampleForm())
- End Sub
- End Class
- End Namespace
Ответить
|
Страница: 1 |
Поиск по форуму