Вопросы по скриптам в Simple-Scada 2

Автор Simple-Scada, 29 января 2016, 15:19:20

pan2000

Здравствуйте.

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

Аналогичная проблема и решение от Simple-Scada:
Цитата: Серега от 09 апреля 2019, 11:21:23

Simple-Scada

ЦитироватьТогда сразу же хочется кнопку "Компилировать все"
Добавим. Сейчас для перекомпиляции достаточно сохранить проект (Ctrl + S).

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

deldemo

pan2000  Simple-Scada  Огромное спасибо!!!

pan2000

#843
Дело не в пробеле, а в попытке нового компилятора рассматривать строковую константу, содержащую ключевые слова Delphi, как команду.
Причем до сборки строки из отдельных констант.
Код: pascal
var
  aQuery: string;
begin
  aQuery :=   ',Begin';        //   следующие строки сохраняются с ошибкой:
//  aQuery :=   ', Begin';     // не все пробелы одинаково полезны
//  aQuery :=   ',' + 'Begin'; // различие между значениями суммы констант и одиночной константой
end.

Simple-Scada

Цитироватьа в попытке нового компилятора рассматривать строковую константу
Именно в этом и состоит ошибка. Но в приведённом deldemo коде пробел исправит ситуацию, т.к. в строке после CASE есть и END, который будет учтен как завершение CASE.

Simple-Scada

#845
deldemo, отправили Вам ссылку на обновление с исправлением.

emoxristov

Simple Scada
У меня есть три кнопки B1, B2, B3, как я могу сделать так, чтобы B3 имел скрипт для исключения скриптов B1 и B2? Когда я нажимаю B3, скрипты на B1 и B2 не работают?
Спасибо.

Simple_Scada

Здравствуйте.

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


bacchus1

#848
Добрый день!
Код: pascal
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
Компилируется скрипт без ошибок. В чем может быть дело?

Simple_Scada

Здравствуйте.

В скрипте не хватает конструкции begin...end после строчки with, поэтому with действует только на первый if...then. Нужно заключить в begin...end весь код после with:
Код: pascal
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


emoxristov

Simple Scada
Как я могу добавить эту строку  " Button14.Value := 0; " в скрипт фотографии?
Когда я нажимаю кнопку, я хочу, чтобы анимация работать, но не запускалась Button14.Value := 0;
Анимация работает, когда PLC получает сигнал от контактора, что он включен.
Большое спасибо.

Simple_Scada

Здравствуйте.

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

lipvasko

Добрый день , как можно создавать текстовый файл со своим именем, скажем в имени файла должна быть дата, время и цифра , и не использовать для сохранения папку в основной программе , а в другом месте.

Simple-Scada

Здравствуйте.
Прочтите описание процедуры TextFileOpen из руководства (параметр APath).

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