Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Условие или функция из файла Добавлено: 27.09.09 08:58  

Автор вопроса:  ☺♣FIO♣☺
У меня есть файл в котором две строки:
X=25
IF X>20 THEN MSGBOX("") ELSE MSGBOX("OK")
Прога их читает и должна выполнить. Как можно это сделать?

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #1
Добавлено: 27.09.09 10:23
microsoft scripting runtime подключаем в референцах и юзаем

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #2
Добавлено: 27.09.09 10:24
ой не, не в референцах, а к наборе инструментов.

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 27.09.09 10:31
Подключаешь, получаешь контрол такой. Только ты свой код в процедуру засунь:
  1.  
  2. SUB BLABLABLA
  3. X=25
  4. IF X>20 THEN MSGBOX("") ELSE MSGBOX("OK")
  5. END SUB


в файле текстовом своем я имею ввиду.
Далее считываешь это дело как текст в переменную String.Пусть она будет называться, скажем, a. Тогда кидаем контрол на форму и пишем такой код:
  1.  
  2. ScriptControl1.Reset
  3. ScriptControl1.AddCode a
  4. ScriptControl1.Run "BLABLABLA"


Регистр не важен.

Ответить

Номер ответа: 4
Автор ответа:
 ☺♣FIO♣☺



Вопросов: 35
Ответов: 160
 Профиль | | #4 Добавлено: 27.09.09 10:36
я его не могу найти(контрол)

Ответить

Номер ответа: 5
Автор ответа:
 ☺♣FIO♣☺



Вопросов: 35
Ответов: 160
 Профиль | | #5 Добавлено: 27.09.09 10:39
Или у меня в файле:
X>5
И это выражение нужно подставить в IF ...THEN

Ответить

Номер ответа: 6
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #6
Добавлено: 27.09.09 13:52
JS подключи

Ответить

Номер ответа: 7
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #7
Добавлено: 27.09.09 13:54
Юзать:

  1. Console.WriteLine(JavaScript.Eval("2+3"))


  1.  
  2. Imports Microsoft.JScript
  3. Imports System.CodeDom.Compiler
  4.  
  5. Public Class JavaScript
  6.     Public Shared Function EvalString(ByVal statement As String) As String
  7.         Return Eval(Of String)(statement)
  8.     End Function
  9.  
  10.     Public Shared Function Eval(Of T)(ByVal statement As String) As T
  11.         Return CType(Eval(statement), T)
  12.     End Function
  13.  
  14.     Public Shared Function Eval(ByVal statement As String) As Object
  15.         Return EvaluatorType.InvokeMember("Eval", Reflection.BindingFlags.InvokeMethod, Nothing, Evaluator, New Object() {statement})
  16.     End Function
  17.  
  18.     Private Shared ReadOnly Property Evaluator() As Object
  19.         Get
  20.             If _Evaluator Is Nothing Then GenerateEvaluator()
  21.             Return _Evaluator
  22.         End Get
  23.     End Property
  24.  
  25.     Private Shared ReadOnly Property EvaluatorType() As Type
  26.         Get
  27.             If _EvaluatorType Is Nothing Then GenerateEvaluator()
  28.             Return _EvaluatorType
  29.         End Get
  30.     End Property
  31.  
  32.     Private Shared Sub GenerateEvaluator()
  33.         Dim Compiler = New JScriptCodeProvider().CreateCompiler
  34.  
  35.         Dim Parameters = New CompilerParameters
  36.         Parameters.GenerateInMemory = True
  37.  
  38.         Dim Result = Compiler.CompileAssemblyFromSource(Parameters, _Statement)
  39.         Dim Assembly = Result.CompiledAssembly
  40.  
  41.         _EvaluatorType = Assembly.GetType("Evaluator.Evaluator")
  42.         _Evaluator = Activator.CreateInstance(_EvaluatorType)
  43.  
  44.     End Sub
  45.  
  46.     Private Shared _Evaluator As Object
  47.     Private Shared _EvaluatorType As Type
  48.     Private Shared ReadOnly _Statement As String = "package Evaluator { class Evaluator { public function Eval(expr : String) : String  {  return eval(expr, ""unsafe"");  } } }"
  49. End Class

Ответить

Номер ответа: 8
Автор ответа:
 maza_____



ICQ: 9968842 

Вопросов: 40
Ответов: 337
 Web-сайт: vkontakte.ru/id25563295 добавляйтесь в друзья))
 Профиль | | #8
Добавлено: 27.09.09 14:00
VβРUηit пишет:
Подключаешь, получаешь контрол такой
ScriptControl1
форум - .NET

Ответить

Номер ответа: 9
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #9
Добавлено: 27.09.09 22:12
Так там вроде луа скрипты (или как их там) интегрировать проще...

Ответить

Номер ответа: 10
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #10
Добавлено: 27.09.09 23:56
maza_^ пишет:
форум - .NET

и что? Именно в дотнете мы получим контрол AxScriptControl. Подключаем к набору инструментов, а потом тащим контрол на форму и юзаем.

Ответить

Номер ответа: 11
Автор ответа:
 Nickola



Вопросов: 2
Ответов: 12
 Профиль | | #11 Добавлено: 14.01.10 07:41
Порылся в MSDN и нашел такой код

Генерирует класс, записывает в выбранном формате (vb,c#,js), компилирует и запускает на выполнение
  1.  
  2. Imports System
  3. Imports System.CodeDom
  4. Imports System.CodeDom.Compiler
  5. Imports System.Collections
  6. Imports System.ComponentModel
  7. Imports System.Diagnostics
  8. Imports System.Drawing
  9. Imports System.IO
  10. Imports System.Windows.Forms
  11. Imports Microsoft.CSharp
  12. Imports Microsoft.VisualBasic
  13. Imports Microsoft.JScript
  14.  
  15. ' This example demonstrates building a Hello World program graph
  16. ' using System.CodeDom elements. It calls code generator and
  17. ' code compiler methods to build the program using CSharp, VB, or
  18. ' JScript.  A Windows Forms interface is included. Note: Code
  19. ' must be compiled and linked with the Microsoft.JScript assembly.
  20. Namespace CodeDOMExample
  21.  
  22.     Class CodeDomExample
  23.         ' Build a Hello World program graph using
  24.         ' System.CodeDom types.
  25.         Public Shared Function BuildHelloWorldGraph() As CodeCompileUnit
  26.  
  27.             ' Create a new CodeCompileUnit to contain
  28.             ' the program graph.
  29.             Dim compileUnit As New CodeCompileUnit()
  30.  
  31.             ' Declare a new namespace called Samples.
  32.             Dim samples As New CodeNamespace("Samples")
  33.  
  34.             ' Add the new namespace to the compile unit.
  35.             compileUnit.Namespaces.Add(samples)
  36.  
  37.             ' Add the new namespace import for the System namespace.
  38.             samples.Imports.Add(New CodeNamespaceImport("System"))
  39.  
  40.             ' Declare a new type called Class1.
  41.             Dim class1 As New CodeTypeDeclaration("Class1")
  42.  
  43.             ' Add the new type to the namespace type collection.
  44.             samples.Types.Add(class1)
  45.  
  46.             ' Declare a new code entry point method.
  47.             Dim start As New CodeEntryPointMethod()
  48.  
  49.             ' Create a type reference for the System.Console class.
  50.             Dim csSystemConsoleType As New CodeTypeReferenceExpression( _
  51.                 "System.Console")
  52.  
  53.             ' Build a Console.WriteLine statement.
  54.             Dim cs1 As New CodeMethodInvokeExpression( _
  55.                 csSystemConsoleType, "WriteLine", _
  56.                 New CodePrimitiveExpression("Hello World!"))
  57.  
  58.             ' Add the WriteLine call to the statement collection.
  59.             start.Statements.Add(cs1)
  60.  
  61.             ' Build another Console.WriteLine statement.
  62.             Dim cs2 As New CodeMethodInvokeExpression( _
  63.                 csSystemConsoleType, "WriteLine", _
  64.                 New CodePrimitiveExpression("Press the Enter key to continue."))
  65.  
  66.             ' Add the WriteLine call to the statement collection.
  67.             start.Statements.Add(cs2)
  68.  
  69.             ' Build a call to System.Console.ReadLine.
  70.             Dim csReadLine As New CodeMethodInvokeExpression( _
  71.                 csSystemConsoleType, "ReadLine")
  72.  
  73.             ' Add the ReadLine statement.
  74.             start.Statements.Add(csReadLine)
  75.  
  76.             ' Add the code entry point method to
  77.             ' the Members collection of the type.
  78.             class1.Members.Add(start)
  79.  
  80.             Return compileUnit
  81.         End Function
  82.  
  83.         Public Shared Sub GenerateCode(ByVal provider As CodeDomProvider, ByVal compileunit As CodeCompileUnit)
  84.  
  85.             ' Build the source file name with the appropriate
  86.             ' language extension.
  87.             Dim sourceFile As String
  88.             If provider.FileExtension.StartsWith(".") Then
  89.                 sourceFile = "TestGraph" + provider.FileExtension
  90.             Else
  91.                 sourceFile = "TestGraph." + provider.FileExtension
  92.             End If
  93.  
  94.             ' Create an IndentedTextWriter, constructed with
  95.             ' a StreamWriter to the source file.
  96.             Dim tw As New IndentedTextWriter(New StreamWriter(sourceFile, False), "    ")
  97.             ' Generate source code using the code generator.
  98.             provider.GenerateCodeFromCompileUnit(compileunit, tw, New CodeGeneratorOptions())
  99.             ' Close the output file.
  100.             tw.Close()
  101.         End Sub
  102.  
  103.         Public Shared Function CompileCode(ByVal provider As CodeDomProvider, _
  104.                                            ByVal sourceFile As String, _
  105.                                            ByVal exeFile As String) As CompilerResults
  106.  
  107.             ' Configure a CompilerParameters that links System.dll
  108.             ' and produces the specified executable file.
  109.             Dim referenceAssemblies As String() = {"System.dll"}
  110.             Dim cp As New CompilerParameters(referenceAssemblies, exeFile, False)
  111.  
  112.             ' Generate an executable rather than a DLL file.
  113.             cp.GenerateExecutable = True
  114.  
  115.             ' Invoke compilation.
  116.             Dim cr As CompilerResults = provider.CompileAssemblyFromFile(cp, _
  117.                 sourceFile)
  118.             ' Return the results of compilation.
  119.             Return cr
  120.         End Function
  121.     End Class
  122.  
  123.     Public Class CodeDomExampleForm
  124.         Inherits System.Windows.Forms.Form
  125.         Private run_button As New System.Windows.Forms.Button()
  126.         Private compile_button As New System.Windows.Forms.Button()
  127.         Private generate_button As New System.Windows.Forms.Button()
  128.         Private textBox1 As New System.Windows.Forms.TextBox()
  129.         Private comboBox1 As New System.Windows.Forms.ComboBox()
  130.         Private label1 As New System.Windows.Forms.Label()
  131.  
  132.         Private Sub generate_button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  133.             Dim provider As CodeDomProvider = GetCurrentProvider()
  134.             CodeDomExample.GenerateCode(provider, CodeDomExample.BuildHelloWorldGraph())
  135.  
  136.             ' Build the source file name with the appropriate
  137.             ' language extension.
  138.             Dim sourceFile As String
  139.             If provider.FileExtension.StartsWith(".") Then
  140.                 sourceFile = "TestGraph" + provider.FileExtension
  141.             Else
  142.                 sourceFile = "TestGraph." + provider.FileExtension
  143.             End If
  144.  
  145.             ' Read in the generated source file and
  146.             ' display the source text.
  147.             Dim sr As New StreamReader(sourceFile)
  148.             textBox1.Text = sr.ReadToEnd()
  149.             sr.Close()
  150.         End Sub
  151.  
  152.         Private Sub compile_button_Click(ByVal sender As Object, ByVal e As System.EventArgs)
  153.             Dim provider As CodeDomProvider = GetCurrentProvider()
  154.  
  155.             ' Build the source file name with the appropriate
  156.             ' language extension.
  157.             Dim sourceFile As String
  158.             If provider.FileExtension.StartsWith(".") Then
  159.                 sourceFile = "TestGraph" + provider.FileExtension
  160.             Else
  161.                 sourceFile = "TestGraph." + provider.FileExtension
  162.             End If
  163.  
  164.             Dim cr As CompilerResults = CodeDomExample.CompileCode(provider, _
  165.                                                                    sourceFile, _
  166.                                                                    "TestGraph.EXE")
  167.  
  168.             If cr.Errors.Count > 0 Then
  169.                 ' Display compilation errors.
  170.                 textBox1.Text = "Errors encountered while building " + _
  171.                                 sourceFile + " into " + _
  172.                                 cr.PathToAssembly + ": " + ControlChars.CrLf
  173.  
  174.                 Dim ce As System.CodeDom.Compiler.CompilerError
  175.                 For Each ce In cr.Errors
  176.                     textBox1.AppendText(ce.ToString() + ControlChars.CrLf)
  177.                 Next ce
  178.                 run_button.Enabled = False
  179.             Else
  180.                 textBox1.Text = "Source " + sourceFile + " built into " + _
  181.                                 cr.PathToAssembly + " with no errors."
  182.                 run_button.Enabled = True
  183.             End If
  184.         End Sub
  185.  
  186.         Private Sub run_button_Click(ByVal sender As Object, _
  187.             ByVal e As System.EventArgs)
  188.  
  189.             Process.Start("TestGraph.EXE")
  190.         End Sub
  191.  
  192.         Private Function GetCurrentProvider() As CodeDomProvider
  193.  
  194.             Dim provider As CodeDomProvider
  195.             Select Case CStr(Me.comboBox1.SelectedItem)
  196.                 Case "CSharp"
  197.                     provider = New CSharpCodeProvider()
  198.                 Case "Visual Basic"
  199.                     provider = New VBCodeProvider()
  200.                 Case "JScript"
  201.                     provider = New JScriptCodeProvider()
  202.                 Case Else
  203.                     provider = New CSharpCodeProvider()
  204.             End Select
  205.             Return provider
  206.         End Function
  207.  
  208.         Public Sub New()
  209.             Me.SuspendLayout()
  210.             ' Set properties for label1.
  211.             Me.label1.Location = New System.Drawing.Point(395, 20)
  212.             Me.label1.Size = New Size(180, 22)
  213.             Me.label1.Text = "Select a programming language:"
  214.             ' Set properties for comboBox1.
  215.             Me.comboBox1.Location = New System.Drawing.Point(560, 16)
  216.             Me.comboBox1.Size = New Size(190, 23)
  217.             Me.comboBox1.Name = "comboBox1"
  218.             Me.comboBox1.Items.AddRange(New String() {"CSharp", "Visual Basic", "JScript"})
  219.             Me.comboBox1.Anchor = System.Windows.Forms.AnchorStyles.Left Or System.Windows.Forms.AnchorStyles.Right Or System.Windows.Forms.AnchorStyles.Top
  220.             Me.comboBox1.SelectedIndex = 0
  221.             ' Set properties for generate_button.
  222.             Me.generate_button.Location = New System.Drawing.Point(8, 16)
  223.             Me.generate_button.Name = "generate_button"
  224.             Me.generate_button.Size = New System.Drawing.Size(120, 23)
  225.             Me.generate_button.Text = "Generate Code"
  226.             AddHandler generate_button.Click, AddressOf Me.generate_button_Click
  227.             ' Set properties for compile_button.
  228.             Me.compile_button.Location = New System.Drawing.Point(136, 16)
  229.             Me.compile_button.Name = "compile_button"
  230.             Me.compile_button.Size = New System.Drawing.Size(120, 23)
  231.             Me.compile_button.Text = "Compile"
  232.             AddHandler compile_button.Click, AddressOf Me.compile_button_Click
  233.             ' Set properties for run_button.
  234.             Me.run_button.Enabled = False
  235.             Me.run_button.Location = New System.Drawing.Point(264, 16)
  236.             Me.run_button.Name = "run_button"
  237.             Me.run_button.Size = New System.Drawing.Size(120, 23)
  238.             Me.run_button.Text = "Run"
  239.             AddHandler run_button.Click, AddressOf Me.run_button_Click
  240.             ' Set properties for textBox1.
  241.             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
  242.             Me.textBox1.Location = New System.Drawing.Point(8, 48)
  243.             Me.textBox1.Multiline = True
  244.             Me.textBox1.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
  245.             Me.textBox1.Name = "textBox1"
  246.             Me.textBox1.Size = New System.Drawing.Size(744, 280)
  247.             Me.textBox1.Text = ""
  248.             ' Set properties for the CodeDomExampleForm.
  249.             Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
  250.             Me.ClientSize = New System.Drawing.Size(768, 340)
  251.             Me.MinimumSize = New System.Drawing.Size(750, 340)
  252.             Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.textBox1, _
  253.                 Me.run_button, Me.compile_button, Me.generate_button, _
  254.                 Me.comboBox1, Me.label1})
  255.             Me.Name = "CodeDomExampleForm"
  256.             Me.Text = "CodeDom Hello World Example"
  257.             Me.ResumeLayout(False)
  258.         End Sub
  259.  
  260.         Protected Overloads Sub Dispose(ByVal disposing As Boolean)
  261.             MyBase.Dispose(disposing)
  262.         End Sub
  263.  
  264.         <STAThread()> _
  265.         Shared Sub Main()
  266.             Application.Run(New CodeDomExampleForm())
  267.         End Sub
  268.     End Class
  269. End Namespace



Ответить

Номер ответа: 12
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #12 Добавлено: 14.01.10 09:06
и что? Именно в дотнете мы получим контрол AxScriptControl. Подключаем к набору инструментов, а потом тащим контрол на форму и юзаем.

Да то, что ты в своем приложении получишь COM-компонент в Interrop обертке со всеми вытекающими последствиями..
Ты хочешь поговорить о полезности использования COM объектов в NET приложении?

Ответить

Номер ответа: 13
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #13
Добавлено: 14.01.10 15:54
Это личные нападки? :). Выкладывай свой вариант и все - автор темы тебе спасибо скажет.

Ответить

Номер ответа: 14
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #14 Добавлено: 14.01.10 17:12
Это личные нападки?

С чего бы это вдруг? Если ты про свою истерику в прошлой теме, то забудь.. мне до нее дела нету. А личной неприязни я к тебе не испытываю.. Просто поправил тебя в твоих заблуждениях и не более того..
А автору темы пример уже дали.. CodeDom в данной ситуации лучший вариант.. ему останется лишь разобраться с примером и заточить его под себя.. Кроме того, на VB я уже не пишу достаточно давно.. а давать примеры на С# - неблагодарное занятие.. 95% посетителей этого сайта не в состоянии понять код на С# и в ответ вместо спасибо ты услышишь: Это чо за фигню ты мне тут подсунул??? Мне на VB надо!! Так что примеры я пишу крайне редко и только в том случае, если человек дает четко понять, что он в состоянии понять код на C#

Ответить

Номер ответа: 15
Автор ответа:
 Дмитрий Юпатов



Вопросов: 4
Ответов: 457
 Web-сайт: cargomaster.at.ua/
 Профиль | | #15
Добавлено: 14.01.10 18:53
Если ты про свою истерику в прошлой теме, то забудь
да я в-общем спокойно все написал.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам