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

Запись функции в файл для ее последующего вызова

24.05.2012, 22:53. Показов 1305. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.

Столкнулся со следующей проблемой: необходимо посчитать на огромном количестве точек значение функцией задаваемой пользователем. У меня в программе функция (string) разбивается, переводится в постфиксную форму и делается дерево выражения, по которому уже считается значение функции в точке. При огромных количествах повторений вычисления очень много времени тратится на обход времени. Возникает вопрос: можно ли как-нибудь, построив дерево выражения, один раз сделать файл функции, которая бы далее вызывалась в программе? Например, пользователь ввел функцию cos(x)+sin(y), а у нас появился файл с примерным содержанием:

C#
1
2
3
4
5
public
            double func(double x, double y)
        {
            return Math.Cos(x) + Math.Sin(y);
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.05.2012, 22:53
Ответы с готовыми решениями:

Не получается открыть файл - Слишком мало аргументов для вызова функции
Выдает ошибку "Слишком мало аргументов для вызова функции" void input_array_from_file(double *arr, int *n, char *file_name) { ...

Запись в файл непосредственно в момент вызова
Доброго времени суток, форумчане. Вот уже долгое время пишу на C# и впервые понадобилась такая фича, как запись файл именно в момент...

Запись вызова функции в память и многократное использование
Здравствуйте. У меня есть функция, например такая: void Count(int Param) { std::cout << Param << std::endl; } Моя идея...

6
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
24.05.2012, 23:31
Цитата Сообщение от wol4aravio Посмотреть сообщение
Например, пользователь ввел функцию cos(x)+sin(y), а у нас появился файл с примерным содержанием:

C#
1
2
3
4
5
public
            double func(double x, double y)
        {
            return Math.Cos(x) + Math.Sin(y);
        }
Копать там
C#
1
2
   DefineDynamicAssembly
   DefineDynamicModule
или программой создать текстовый исходник C# с нужной функцией и сделать из него Dll вызвав компилятор csc.exe
1
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
24.05.2012, 23:48  [ТС]
Цитата Сообщение от hiddentool Посмотреть сообщение
или программой создать текстовый исходник C# с нужной функцией и сделать из него Dll вызвав компилятор csc.exe
А можно про этот момент поподробней? Возможно ли например в ходе работы программы создавать dll и впоследствии созданный файл использовать?
0
101 / 101 / 12
Регистрация: 21.11.2011
Сообщений: 169
25.05.2012, 07:39
Цитата Сообщение от wol4aravio Посмотреть сообщение
Возможно ли например в ходе работы программы создавать dll и впоследствии созданный файл использовать?
создать не проблема. использовать - копать "Assembly.LoadFrom" и "Assembly.Load"
можно тут посмотреть
http://www.geocities.com/jeff_louie/OOP/oop13.htm
если не то/не работает гуглить по вышеуказаному
0
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
27.05.2012, 20:32  [ТС]
Благодарю за помощь.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
27.05.2012, 20:44
А может имеет смысл пересмотреть алгоритм, чтобы он по-шустрее работал?
Это так, мысль пришла.
0
0 / 0 / 0
Регистрация: 24.04.2012
Сообщений: 12
28.05.2012, 00:38  [ТС]
Ну, к сожалению, мне неизвестны другие способы обработки функций, представленных в виде строки.

Возник следующий вопрос. Программа работает следующим образом: вначале пользователь вводит функцию, которая потом много раз просчитывается. Как можно создавать dll файл после ввода пользователем и как его потом сразу же подключить и использовать для подсчета? К сожалению, найти ответа самостоятельно не смог.

Добавлено через 2 часа 55 минут
Не подскажете, можно ли как то подключить сторонний .cs файл и вызвать описанный в нем метод?

Добавлено через 6 минут
вариант через "add existing item" не подходит, так как .cs файл будет создаваться динамически

Добавлено через 23 минуты
C#
1
2
3
4
5
CodeDomProvider provider = new Microsoft.CSharp.CSharpCodeProvider();
CompilerResults result = provider.CompileAssemblyFromFile(new CompilerParameters(), "Class1.cs");
System.Reflection.Assembly resultAssembly = result.CompiledAssembly;
Type myType = resultAssembly.GetType("ClassLibrary1.Class1");
object myClassInstance = Activator.CreateInstance(myType);
Пробовал с помощью такого кода. Скомпилировалось все отлично, но при выполнении на строчке с "resultAssembly" вылезла ошибка:

Невозможно загрузить файл или сборку "file:///C:\Users\VALENTIN\AppData\Local\Temp\5vi c0grj.dll" или один из зависимых от них компонентов. Не удается найти указанный файл.

Заметил также, что при каждом запуске выдается ошибка на отсутствие разных *.dll файлов
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.05.2012, 00:38
Помогаю со студенческими работами здесь

Как выбрать файл с диска для последующего открытия?
Подскажите как открыть, точнее, как выбрать файл, с помощью "обзора " то есть с помощью файлового менеджера, подскажите какие библиотеки...

Указатель для вызова виртуальной функции
Помогите разобраться в строении вызова виртуальной функции Если не сложно, объсните каждый указатель #include <iostream> ...

Нет подходящей функции для вызова
Добрый вечер ребята! Помогите исправить ошибку. При компиляции выскакивает ошибка "error: no matching function for call to...

Как подключить h-файл для вызова TreeVeiw_SetImageList?
Обьясните, пожалуйста, как быть. Такая проблема: надо использовать функцию TreeVeiw_SetImageList , она описана в commctrl.h . В С++...

Пофиксить код для коректного вызова функции
Есть код, нужно поправить функцию Vivod, чтобы корректно работала...не видно переменных #include <conio.h> #include...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru