Стартовая страница › Форумы › Понять, как работает ПО › Использование формул › Формулы в V6 Beta
Помечено: Формулы Версия 6
- В этой теме 81 ответ, 4 участника, последнее обновление 10 месяцев, 1 неделя назад сделано
a80808.
-
АвторСообщения
-
13.02.2022 в 10:55 #2182513.02.2022 в 11:08 #21829
Mikhail
МодераторКакая была формула в 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 правда в нем бывают свои заморочки, он иногда неправильно определяет кодировку и ему надо ее вручную выставлять….
-
Этот ответ был изменен 11 месяцев, 3 недели назад от
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 компилятором автоматом, приходилось иногда мудрить в связи с этим.
-
Этот ответ был изменен 11 месяцев, 3 недели назад от
manjey73.
13.02.2022 в 20:17 #21844a80808
УчастникDateTime DecodeDate(double dateTime)
{
return ScadaUtils.DecodeDateTime(dateTime);
}Эта формула вообще то в «штатной» поставке в таблице «Формулы» в пятой версии…
-
Этот ответ был изменен 11 месяцев, 3 недели назад от
-
АвторСообщения
- Вы должны авторизироваться для ответа в этой теме.