Уважаемый ksapp, мы занимаемся разработкой программ на языке Delphi уже долгое время, Simple-Scada также полностью написана на Delphi и, конечно, мы не стали бы писать о передаче свойств, если бы не были уверены в правильности написанного. Как и было описано в пред. сообщении, в делфи и паскале нельзя передавать свойства объекта в функции Inc и Dec, т.к. эти функции используют
передачу параметра по ссылке. Также нельзя передавать свойства объектов в любые другие процедуры и функции, если в них требуется передача параметра по ссылке, а не по значению.
В своём примере Вы передаёте в функцию Inc
переменную объекта MyObj, а не
свойство. Подробнее про свойства объектов можно
прочесть здесь. И объект со свойством будет выглядеть так:
type
MyObj = class
private
function GetSvoistvo: Integer;
procedure SetSvoistvo(AValue: Integer);
public
property Svoistvo: integer read GetSvoistvo write SetSvoistvo;
end;
var
MyVar : MyObj;
// здесь нужно описать функцию GetSvoistvo и SetSvoistvo, мы пропустим описание
begin
MyVar.Svoistvo := 0;
Inc(MyVar.Svoistvo); // здесь будет ошибка компиляции
end.
В упрощенном виде примерно так и выглядит класс Переменной (TM_Variable) в Simple-Scada 2. И в редакторе скриптов Вы работаете именно со свойствами объектов, а не переменными и на это
есть много причин, одна из них - скрытие от пользователя (и ограничение доступа к переменным) о которых ему лучше не знать.
Кстати, в вашей системе вот такая конструкция:
type MyObj = object
Svoistvo : integer;
end;
вообще не компилируется - выдаётся ошибка. В то время как вот это:
Не компилируется, т.к. ключевое слово object использовалось для объявления классов в объектной модели Turbo Pascal. В современных компиляторах используется объектная модель Object Pascal и ключевое слово
class. Подробнее про
объектные модели здесь. Поэтому объявление класса должно быть таким:
type
MyObj = class
Svoistvo: integer;
end;