Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 5
Регистрация: 09.10.2015
Сообщений: 229
1

Встроенный язык в программу

21.05.2019, 12:58. Показов 1202. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день уважаемые друзья, не кто не сталкивался с задачей встроить в свою программу какой-то простой язык для написаний пользователем простых подпрограмм типа скриптов с условиями циклами и т. д.
Могу привести несколько примеров типа как Excel то есть textbox вы вводите туда какой-то скрипт используя переменные типа ячеек в excel и потом при срабатывание определённого события этот скрипт выполняется. Я понимаю что силами c# можно реализовать данную задачу несколькими способами но это долго может есть какое-то готовое решение типа библиотеки? Спасибо
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2019, 12:58
Ответы с готовыми решениями:

встроенный язык 1С
Здравствуйте! У меня такой вопрос. Есть небольшая программка на встроенном языке 1С, которая...

Перевести программу с С++ на язык R
ЗАДАНИЕ: Вычислить значение функции F(n) = 1!*2!*3!...*n!., где n! = 1*2*3*…*n. ПРОГРАММА:...

Переведите программу в язык С++
У меня такая же задача. Только надо на С++. В спойлер дано задание. Кому не трудно. На с++...

Переделайте Программу из С++ на язык СИ
#include <cstddef> #include <iostream> size_t unique(int* a, size_t n) { size_t j = 0; ...

2
490 / 286 / 129
Регистрация: 30.10.2018
Сообщений: 1,309
21.05.2019, 13:03 2
Лучший ответ Сообщение было отмечено Graf1385 как решение

Решение

Graf1385,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.Reflection;
 
namespace ScriptRun
{
    //скриптовый интерфейс
    public interface IRunable
    {
        string Run();
    }
 
    public class ScriptEngine
    {
        private CompilerResults Results = null;
        public void Compile(string _source, string[] _assemblies)
        {
            CompilerParameters compilerParameters = new CompilerParameters();
            compilerParameters.GenerateInMemory = true;
            if (_assemblies != null)
            {
                foreach (string asm in _assemblies)
                {
                    compilerParameters.ReferencedAssemblies.Add(asm);
                }
            }
 
            Results = new CSharpCodeProvider()
                .CompileAssemblyFromSource(compilerParameters, _source);
 
            if (Results.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < Results.Errors.Count; i++)
                {
                    sb.Append(Results.Errors[i].ToString());
                }
                throw new InvalidOperationException(sb.ToString());
            }
        }
        public object CreateClass(string _className)
        {
            object obj = Results.CompiledAssembly.CreateInstance(_className);
            return obj;
        }
    }
 
    class Program
    {
        static void RunScript(string script, string runableClassName)
        {
            ScriptEngine engine = new ScriptEngine();
            engine.Compile(script, new string[] { Assembly.GetExecutingAssembly().Location });
 
            //используем интерфейс IRunable
            IRunable run = (IRunable)engine.CreateClass(runableClassName);
            string result = run.Run();
            Console.WriteLine(result);
 
            //вызываем MyMethod
            MethodInfo myMethod = run.GetType().GetMethod("MyMethod");
            List<object> parameters = new List<object>();
            parameters.Add("VALUE");
            result = (string)myMethod.Invoke(run, parameters.ToArray());
            Console.WriteLine(result);
        }
 
        static void Main(string[] args)
        {
            string source =
            @"using System;
            namespace ScriptCode
            {
                public class MyClass: ScriptRun.IRunable
                {
                    public string MyMethod(string _value)
                    {
                        return ""метод MyMethod: return string value: _value = "" + _value;
                    }
                    public string Run()
                    {
                        Console.WriteLine(""Text from script"");
                        return ""интерфейсный метод Run: IRun.Run.value"";
                    }
                }
            }
            ";
            RunScript(source, "ScriptCode.MyClass");
            Console.ReadKey();
        }
    }
}
1
0 / 0 / 5
Регистрация: 09.10.2015
Сообщений: 229
21.05.2019, 13:06  [ТС] 3
Я вас понял большое спасибо.
0
21.05.2019, 13:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2019, 13:06
Помогаю со студенческими работами здесь

Преобразуйте программу на язык С++
Кто может сделать перевод на С Pascala на С++ эту программу program MaxElem; uses Crt; type Mas...

Перевести программу на русский язык
Всем добрый вечер, помогите пожалуйста доделать программу: 1) нужно перевести ее полностью на...

переделать программу из Pascal в язык С
Дано натуральное число n, равное выраженной в копейках цене некоторого товара, например, 317, 5005,...

Перевести программу с языка Паскаль в язык С++
Имееться задача на Pascale: {Метод Ньютона решения нелинейного уравнения} program Newton; uses...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru