Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Типы данных и их объявления в скриптах  (Прочитано 6349 раз)

Серега

  • Старожил
  • ****
  • Сообщений: 290
    • Просмотр профиля
Добрый день!
Столкнулся со следующей ситуацией.
Из различных примеров на форуме и руководств по скаде скрипты можно оформить так (Первое предположение, если можно просто напишите да):
Код: (delphi)
var
  x: Integer;

  procedure Sum (y:Single);
  begin
    y := y + 1;
  end;
begin
  GlobalVar.Value := Sum(5) + x;
end.
Скрипт просто гипотетический. Вопрос возник с объявлением типа переменных в области var скрипта и в области переменных процедуры.
На рабочем ноуте стоит демо-версия. На стационарнике профессионал. На ноуте например тип single переменной в скрипте и в процедуре компилируется. Все класс.
На стационарнике тот же скрипт, ни в области var скрипта, ни в области процедуры не компилируется и выдает сообщение "Undeclared type "single" в строке ... " для некоторых типов данных.
Может не правильно объявляю?
Может подскажите в чем проблема?
« Изменён: 23 Июля 2018, 20:33:48 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3217
    • Просмотр профиля
    • Simple-Scada
Re: Типы данных и их объявления в скриптах
« Ответ #1 : 23 Июля 2018, 20:41:41 »
Здравствуйте.

Приведённый пример некорректен. Вот правильный вариант:
Код: (delphi)
var
  x: Integer;
 
  function Sum(y: Single): Single;
  begin
    Result := y + 1;
  end;
begin
  GlobalVar.Value := Sum(5) + x;
end.

Цитировать
На стационарнике тот же скрипт, ни в области var скрипта, ни в области процедуры не компилируется и выдает сообщение "Undeclared type "single" в строке ... "
Значит на стационарном компьютере скрипт не тот же, или содержит опечатки. Если разницу в проектах не удается найти, то вышлите нам проект с ошибкой из папки "Projects\", мы напишем по какой именно причине возникает эта ошибка.

Серега

  • Старожил
  • ****
  • Сообщений: 290
    • Просмотр профиля
Re: Типы данных и их объявления в скриптах
« Ответ #2 : 24 Июля 2018, 15:39:00 »
Возможно меня не поняли. Приведенный скрипт написан прямо на форуме без проверки. Использование структуры procedure (x:integer; var y:integer) то же работает. Проблема с компиляцией скрипта на стационарнике (назовем его инженерной станцией) .
Вот пример скрипта (без опечаток с проверкой уже на 2 рабочих ноутах (работает) и одном стационарнике (не работает))
Код: (delphi)
  procedure (x:single);
  begin
  end;
begin

end.
Данный скрипт проходит компиляцию на ноуте. Но выдает ошибку "Undeclared type "single" в строке ... " на стационарнике.
И в принципе в ходе поиска решения еще нашли что
Код: (delphi)
var
  x: single;
begin
end.
выдает ошибку "Undeclared type "single" в строке ... " на стационарнике. Плюс данная проблема проявилась еще с несколькими типами данных.
Согласно заключенному соглашению о нераспространении информации выслать проект не могу. На принтскрине попытка создать процедуру.
Вопрос№1. Может ли влиять сетевая архитектура на работу сервера и клиента?
Вопрос№2. Может ли влиять версия ОС компов?
Вопрос№3. Может ли влиять
« Изменён: 24 Июля 2018, 15:54:54 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3217
    • Просмотр профиля
    • Simple-Scada
Re: Типы данных и их объявления в скриптах
« Ответ #3 : 24 Июля 2018, 16:12:25 »
Цитировать
Вопрос№1. Может ли влиять сетевая архитектура на работу сервера и клиента?
Вопрос№2. Может ли влиять версия ОС компов?
Нет, иначе одни и те же программы работали на разных ПК по-разному и о стабильной работе ПК не было бы и речи. Программа может не запуститься на какой-то несовместимой ОС, или зависать при работе в ней, но если Вы уже запустили программу на каком-то ПК, то она всегда будет работать по тому же сценарию, что и на других ПК. Поэтому, если в одном проекте всё компилируется, а в другом нет, значит в этих проектах есть какая-то разница, а ПК на которых Вы проводите компиляцию не имеют значения. Мы практически уверены, что Вы делаете тесты на стационарном компьютере используя один проект, а на других ПК другой проект. И не удивительно, что результаты тестирования разные. Если Вы возьмёте проект со стационарного компьютера, скопируете на другие ПК, то на них также не будет проходить компиляция, потому что программа будет работать одинаково на всех ПК.

Т.к. нет возможности выслать проект для проверки, то мы можем только попытаться угадать в чем именно разница в Ваших тестах. Возможно у Вас в проблемном проекте  существуют объекты (или переменные) названные как типы данных. Например переменная, или объект с именем "Single". Тогда при компиляции Single будет рассматриваться не как тип данных, а как объект. Это можно легко проверить если попытаться переименовать какой-то объект в "Single". Если это имя уже есть у какого-то объекта, то Вы увидите соответствующей диалог.

Серега

  • Старожил
  • ****
  • Сообщений: 290
    • Просмотр профиля
Re: Типы данных и их объявления в скриптах
« Ответ #4 : 26 Июля 2018, 10:13:54 »
Добрый день!
Добрался до объекта.
Да действительно была переменная с именем single типа single. Использовалась на стационарнике для проверки тестовых скриптов. Переименовали и компиляция прошла.
Спасибо за помощь.
Предложение. Может быть ввести проверку или запрет на имена переменных совпадающих с системными словами например как типы данных. 

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3217
    • Просмотр профиля
    • Simple-Scada
Re: Типы данных и их объявления в скриптах
« Ответ #5 : 26 Июля 2018, 10:29:32 »
Цитировать
Может быть ввести проверку или запрет на имена переменных совпадающих с системными словами например как типы данных.
Уже добавили, в ближайшем обновлении уже будет эта функция.