Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Формулы в V6 Beta
Помечено: Формулы Версия 6
- В этой теме 81 ответ, 4 участника, последнее обновление 1 год, 12 месяцев назад сделано a80808.
-
АвторСообщения
-
13.02.2022 в 10:55 #2182513.02.2022 в 11:08 #21829MikhailМодератор
Какая была формула в 5 версии?
13.02.2022 в 11:12 #21830manjey73УчастникЕще раз, в вашем файле более 700 строк.
ругается на символ ( он как раз 11-й в строке 331)
и почему return (0); а не просто return 0; ???
13.02.2022 в 11:20 #21831a80808УчастникНу могу сказать в чем было дело.
Я уже писал, что загружал это файл в Visual Studio (до этого смотрел его Блокнотом, так как VS у меня загружается очень долго). В Блокноте последняя строка была 221.
А вот после загрузки его в VS стало действительно больше 700 строк. и 331 строка действительно содержит ошибку…
Всем спасибо!
Михаил, может в будущей документации стоит предупредить, что этот файл нельзя смотреть Блокнотом?13.02.2022 в 11:21 #21832manjey73УчастникБлокнотом вообще нельзя смотреть большинство файлов, особенно если они формируются как для Windows так и для Linux 🙂
Как раньше писал, для редактирования вместо блокнота использую AkelPad правда в нем бывают свои заморочки, он иногда неправильно определяет кодировку и ему надо ее вручную выставлять….
- Этот ответ был изменен 2 года, 1 месяц назад от manjey73.
13.02.2022 в 11:22 #21833MikhailМодераторБлокнотом ничего нельзя смотреть)) поставьте notepad++ например.
Перенос строк нужно отключать, чтобы нумерация не сбивалась.13.02.2022 в 11:24 #21835a80808Участник> и почему return (0); а не просто return 0; ???
Потому что это нотация «чистого» Си. Ну не ложится никак у меня объектная ориентация на мозги, долгие годы загаженные процедурной ориентацией 🙂
13.02.2022 в 12:00 #21836MikhailМодераторСейчас формула заработала?
13.02.2022 в 12:29 #21837a80808УчастникНет, пофиг ей в скобках или нет 🙂
1. Убрал из таблицы Scripts все формулы, которые туда включил.
2. Убрал ссылки на формулы в каналах (отключил птичку «использовать формулу», саму формулу пока не удалял)
3. Остались только формулы в каналах, использующие Val() и SetVal()
4 осталось вот такое сообщение:
2022-02-13 11:32:14 [DELL6230][DELL6230$][ERR] Error compiling the source code of the scripts and formulas:
System.ArgumentException: Cannot bind to the target method because its signature is not compatible with that of the delegate type.
at System.Delegate.CreateDelegate(Type type, Object target, String method, Boolean ignoreCase, Boolean throwOnBindFailure)
at Scada.Server.Engine.Calculator.RetrieveMethods(Assembly assembly, Dictionary2 cnlTags, Dictionary
2 outCnlTags, Dictionary`2 cnlClassNames)
at Scada.Server.Engine.Calculator.CompileScripts(BaseDataSet baseDataSet, Dictionary2 cnlTags, Dictionary
2 outCnlTags)
2022-02-13 11:32:14 [DELL6230][DELL6230$][ERR] Normal program execution is impossible
2022-02-13 11:37:16 [DELL6230][DELL6230$][ACT] Server is stopped13.02.2022 в 13:52 #21838MikhailМодераторНаверное, изменения таблицы Скрипты не передались на исполнение. Если вернуть начальную таблицу Скрипты и снять галочки формулы на каналах, то сервер должен запуститься. Затем добавлять формулы по одной.
13.02.2022 в 14:24 #21839a80808УчастникНачну с нового чистого листа. Есть проект еще попроще (вроде) и изначально (вроде бы :)) сделанный в 5.8.
Буду аккуратно все конвертировать и сразу записывать что и как на что меняем.
Вдруг кто решит пойти моим путем 🙂13.02.2022 в 18:31 #21840manjey73УчастникЕще момент, я не уверен, что Scada скрипты и public DateTime вообще совместимы, ибо DateTime это структура, а не одна переменная…
13.02.2022 в 19:36 #21841a80808УчастникНу в пятой версии то работало…
13.02.2022 в 20:00 #21842manjey73УчастникЧто работало? возвращение вместо структуры 0 или то, что было у вас в формуле?
Сделайте return new DateTime(); ошибка пропадет?
Как в 6-й версии реализован компилятор формул? сомневаюсь, что строго так же, как в 5-й версии.
Например в 5-й версии все, что возвращали из формул преобразовывалось в double компилятором автоматом, приходилось иногда мудрить в связи с этим.
- Этот ответ был изменен 2 года, 1 месяц назад от manjey73.
13.02.2022 в 20:17 #21844a80808УчастникDateTime DecodeDate(double dateTime)
{
return ScadaUtils.DecodeDateTime(dateTime);
}Эта формула вообще то в «штатной» поставке в таблице «Формулы» в пятой версии…
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.