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

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

Автор Тема: Вопросы по скриптам в Simple-Scada 2  (Прочитано 520894 раз)

pan2000

  • Постоялец
  • ***
  • Сообщений: 216
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #840 : 27 Апреля 2019, 23:21:34 »
Здравствуйте.

Пока для успешного сохранения необходимо наличие пробела между запятой и case.

Аналогичная проблема и решение от Simple-Scada:

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #841 : 28 Апреля 2019, 09:55:08 »
Цитировать
Тогда сразу же хочется кнопку "Компилировать все"
Добавим. Сейчас для перекомпиляции достаточно сохранить проект (Ctrl + S).

Цитировать
Есть скрипт с запросом к БД
при компиляции выдает ошибку [Update_tblPremix]"begin" not found
Если закоментировать блок с CASE в запросе - то компиляция проходит без ошибок.
А это ошибка, исправим в ближайшее время. В текущей версии её можно устранить: как и описал pan2000, добавьте пробел между запятой и case.

deldemo

  • Старожил
  • ****
  • Сообщений: 308
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #842 : 28 Апреля 2019, 16:09:01 »
pan2000  Simple-Scada  Огромное спасибо!!!

pan2000

  • Постоялец
  • ***
  • Сообщений: 216
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #843 : 28 Апреля 2019, 19:49:07 »
Дело не в пробеле, а в попытке нового компилятора рассматривать строковую константу, содержащую ключевые слова Delphi, как команду.
Причем до сборки строки из отдельных констант.
Код: (delphi)
var
  aQuery: string;
begin
  aQuery :=   ',Begin';        //   следующие строки сохраняются с ошибкой:
//  aQuery :=   ', Begin';     // не все пробелы одинаково полезны
//  aQuery :=   ',' + 'Begin'; // различие между значениями суммы констант и одиночной константой
end.
« Изменён: 29 Апреля 2019, 06:05:35 от pan2000 »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #844 : 28 Апреля 2019, 21:38:18 »
Цитировать
а в попытке нового компилятора рассматривать строковую константу
Именно в этом и состоит ошибка. Но в приведённом deldemo коде пробел исправит ситуацию, т.к. в строке после CASE есть и END, который будет учтен как завершение CASE.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #845 : 30 Апреля 2019, 11:59:44 »
deldemo, отправили Вам ссылку на обновление с исправлением.
« Изменён: 07 Июня 2024, 12:29:46 от Simple-Scada »

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #846 : 14 Мая 2019, 07:51:53 »
Simple Scada
У меня есть три кнопки B1, B2, B3, как я могу сделать так, чтобы B3 имел скрипт для исключения скриптов B1 и B2? Когда я нажимаю B3, скрипты на B1 и B2 не работают?
Спасибо.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1365
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #847 : 14 Мая 2019, 09:41:15 »
Здравствуйте.

Для этого можно использовать свойство "Enabled". Когда оно равно "False" - кнопка будет отображаться, но будет не активна и на нее нельзя будет нажать. На событие OnClick кнопки B3 можно написать скрипт:
Код: (delphi)
begin
  B1.Enabled := False;
  B2.Enabled := False;
end.


bacchus1

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #848 : 14 Мая 2019, 10:01:11 »
Добрый день!
Код: (delphi)
begin
    with Sender as TM_Object do
    if AsInt AND Sender.Tag = Sender.Tag then Sender.Color := clRed
      else Sender.Color := RGB(191,191,191);
    if Variable.IsGoodQuality = False then Sender.Color := clGray;
end.
Сервер пишет ошибку в последней строке:
Цитировать
Ошибка в скрипте "ChangeColor2Red" в строке 8. Access violation at address 0479C684. Read of address 0A569FA0
Компилируется скрипт без ошибок. В чем может быть дело?
« Изменён: 14 Мая 2019, 11:02:45 от Simple-Scada »

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1365
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #849 : 14 Мая 2019, 10:54:31 »
Здравствуйте.

В скрипте не хватает конструкции begin...end после строчки with, поэтому with действует только на первый if...then. Нужно заключить в begin...end весь код после with:
Код: (delphi)
begin
    with Sender as TM_Object do
      begin
        if AsInt AND Sender.Tag = Sender.Tag then
          Sender.Color := clRed
        else
          Sender.Color := RGB(191,191,191);
        if Variable.IsGoodQuality = False then Sender.Color := clGray;
      end;
end.

bacchus1

  • Новичок
  • *
  • Сообщений: 38
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #850 : 14 Мая 2019, 13:20:15 »
Спасибо, все заработало.

emoxristov

  • Пользователь
  • **
  • Сообщений: 53
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #851 : 14 Мая 2019, 20:34:03 »
Simple Scada
Как я могу добавить эту строку  " Button14.Value := 0; " в скрипт фотографии?
Когда я нажимаю кнопку, я хочу, чтобы анимация работать, но не запускалась Button14.Value := 0;
Анимация работает, когда PLC получает сигнал от контактора, что он включен.
Большое спасибо.

Simple_Scada

  • Администратор
  • *****
  • Сообщений: 1365
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #852 : 15 Мая 2019, 12:59:25 »
Здравствуйте.

Код можно изменить так:
Код: (delphi)
begin
  { если значение переменной (в виде целого числа),
    которая связана с изображением больше нуля, то }
  if Image1.AsInt > 0 then
  begin
    Image1.AnimSpeed := 16; // запустить анимацию
    Button14.Value := 0;
  end else                  // иначе
    Image1.AnimSpeed := 0;  // остановить анимацию
end.

lipvasko

  • Пользователь
  • **
  • Сообщений: 65
    • Просмотр профиля
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #853 : 24 Мая 2019, 09:03:57 »
Добрый день , как можно создавать текстовый файл со своим именем, скажем в имени файла должна быть дата, время и цифра , и не использовать для сохранения папку в основной программе , а в другом месте.

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3197
    • Просмотр профиля
    • Simple-Scada
Re: Вопросы по скриптам в Simple-Scada 2
« Ответ #854 : 24 Мая 2019, 09:51:53 »
Здравствуйте.
Прочтите описание процедуры TextFileOpen из руководства (параметр APath).

Цитировать
скажем в имени файла должна быть дата, время и цифра
Лучше всего использовать специальную функцию DateTimeToFileName для имён файлов.