powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вычислять переменные из строки
18 сообщений из 18, страница 1 из 1
Вычислять переменные из строки
    #39073592
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго дня.

Подскажите как можно сделать так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
...
decimal СтавСотр = {получаем ставку};
int ЧасовОтр = {получаем отработанные часы сотрудника};
int Бонус = {получаем бонус};

decimal result = "СтавСотр * ЧасовОтр + Бонус";
...



"СтавСотр * ЧасовОтр + Бонус" - это хранимая в базе и редактируемая строка здесь приведена для показательности.

Смотрел интернет - там какие-то сложные вещи. Неужели нет чего-то простого как в JavaScript eval()?
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073596
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор КСмотрел интернет - там какие-то сложные вещи.
ну так разберись - перестанет быть сложным
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073616
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор К"СтавСотр * ЧасовОтр + Бонус" - это хранимая в базе и редактируемая строка здесь приведена для показательности.

Смотрел интернет - там какие-то сложные вещи. Неужели нет чего-то простого как в JavaScript eval()?

https://github.com/NLua/NLua

Код: c#
1.
var res = state.DoString ("return 10 + 3*(5 + 2)")[0] as double;
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073617
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор К,

Код: c#
1.
2.
3.
    double val = 12.0;
    state ["x"] = val; // Create a global value 'x' 
    var res = state.DoString ("return 10 + x*(5 + 2)")[0] as double;
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073630
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

Установил NLua - пробую пример. Вначале ругается на строчку:
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073631
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А потом при попытке повторной компиляции выдает
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073632
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVostt,

В том смысле, что убираю as double - первый запуск хорошо - всё считает правильно. Вторая компиляция не проходит. Даже если просто пустую строку в код добавить.

Что такое может быть?
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073688
МСУ такой СУМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttФёдор К"СтавСотр * ЧасовОтр + Бонус" - это хранимая в базе и редактируемая строка здесь приведена для показательности.

Смотрел интернет - там какие-то сложные вещи. Неужели нет чего-то простого как в JavaScript eval()?

https://github.com/NLua/NLua

Код: c#
1.
var res = state.DoString ("return 10 + 3*(5 + 2)")[0] as double;



Ты чем там обдалбываешься?

Учись, студент, 100500 вариантов http://codearticles.ru/articles/1469
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073820
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ такой СУМУчись, студент, 100500 вариантов http://codearticles.ru/articles/1469

да ты чо! привёл черезжопные конструкции, ещё и гордится ими
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073827
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор КВ том смысле, что убираю as double - первый запуск хорошо - всё считает правильно. Вторая компиляция не проходит. Даже если просто пустую строку в код добавить.

Что такое может быть?

я скопировал код из доки, и не обратил внимание на as double — так делать нельзя, так как as применяется только к объектам, а не к значениям.

в общем, я когда-то юзал Lua в дотнете и остался доволен.

сейчас решаю подобную задачу, но с использованием Roslyn. не стал про него писать, потому что скриптинг для Roslyn ещё не готов и находится в стадии глубокой беты, использовать можно, но с некоторыми сложностями. для вашей задачи лучше всего подойдёт Lua.

а то, что предлагает МСУ — даже не смотри, это бредятина сивой кобылы, десткий сад какой-то, куча наваленного лопатой гомна.
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073836
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор К,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
            var state = new Lua();

            decimal СтавСотр = 8900m; //{получаем ставку};
            int ЧасовОтр = 120; //{получаем отработанные часы сотрудника};
            int Бонус = 20; // {получаем бонус};

            //decimal result = "СтавСотр * ЧасовОтр + Бонус";

            state["S"] = СтавСотр;
            state["HW"] = ЧасовОтр;
            state["B"] = Бонус;

            var result = state.DoString("return S * HW + B")[0];

            Console.WriteLine("result = {0}", result);
            Console.ReadLine();



пример рабочего проекта приложен к сообщению.
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073966
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttФёдор К,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
            var state = new Lua();

            decimal СтавСотр = 8900m; //{получаем ставку};
            int ЧасовОтр = 120; //{получаем отработанные часы сотрудника};
            int Бонус = 20; // {получаем бонус};

            //decimal result = "СтавСотр * ЧасовОтр + Бонус";

            state["S"] = СтавСотр;
            state["HW"] = ЧасовОтр;
            state["B"] = Бонус;

            var result = state.DoString("return S * HW + B")[0];

            Console.WriteLine("result = {0}", result);
            Console.ReadLine();



пример рабочего проекта приложен к сообщению.
Спасибо за участие. Пример работает в отличие от моего, что странно (выше я описал ошибку компиляции).
Как выяснилось, Lua не работает с кириллицей. А мне нужна именно кириллица: у бухгалтеров будет строка (текстбокс) в которую они пишут эту формулу (расчет з/п сотрудника): "СтавСотр * ЧасовОтр + Бонус" и сохраняют в БД.

Приходит кризис, они открывают это поле в редакторе и убирают например Бонус. Всё - экономия.
Кризис углубляется - пишут в строке " СтавСотр * ЧасовОтр * 0,95 " и контора снова в выигрыше.

Этих СтавСотр и прочих всяких много для формул расчетов и не только для зарплаты - (д)еффекитивные менеджеры должны с формулами играться и т.п.
Вот как-то так.
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает выполнять транслитерацию перед скармливанием Lua?
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073978
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор КА мне нужна именно кириллица: у бухгалтеров будет строка (текстбокс) в которую они пишут эту формулу (расчет з/п сотрудника): "СтавСотр * ЧасовОтр + Бонус" и сохраняют в БД.


У бухгалтеров должен быть выпадающий список с возможными операндами. Отображаться они должны так, как нужно им. А вот хранить (и вычислять результат) уже нужно так, как удобнее.
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39073992
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, лучше закодить сервис расчета под сто разных вариантов. Потому что если шибко умный бухгалтер вместо знака разделить поставит умножить, и по накладным уйдет денег на пару порядков больше, то потом пальцем покажут на программиста, у которого "программа не работает"
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39074010
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор Ку бухгалтеров будет строка (текстбокс)

а мне казалось, у бухгалтеров уже давно стоит 1С-ка, с исконно русским языком программирования..

ну да ладно. Lua и правда не поддерживает кириллицы в литералах, значит окучивай Roslyn Scripting, или другие способы. не забудь рассказать здесь что выбрал и как решил
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39074015
Фёдор К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hVosttФёдор Ку бухгалтеров будет строка (текстбокс)

а мне казалось, у бухгалтеров уже давно стоит 1С-ка, с исконно русским языком программирования..

ну да ладно. Lua и правда не поддерживает кириллицы в литералах, значит окучивай Roslyn Scripting, или другие способы. не забудь рассказать здесь что выбрал и как решил - Ну, да. 1С - наше фсё.
Но как показала практика допилить 1С до кондиции с приемлемыми затратами не удалось никому. И чтобы реализовать всё, что необходимо придется купить одно+пятое+десятое и долго и нудно с косяками допиливать и перепиливать, что выливается в астрономическую сумму и нереальное время.

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

Shocker.Pro Что мешает выполнять транслитерацию перед скармливанием Lua? - Да, Вы правы. Ничего. Хотя это похоже на костыль.
...
Рейтинг: 0 / 0
Вычислять переменные из строки
    #39074018
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдор КShocker.ProЧто мешает выполнять транслитерацию перед скармливанием Lua? - Да, Вы правы. Ничего. Хотя это похоже на костыль.просто обёртка...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вычислять переменные из строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]