Добрый день.
Как правильно передать тег в процедуру?
Объявляем вот такую процедуру, и мне в нее нужно передать теги
Procedure Gom_ControlPump_Run(var mqtt_pump_Run, vrPump_Run : boolean; State_Pump : integer; bit : byte);
begin
// Управление включением насоса
if mqtt_pump_Run then
if not GetBit(State_Pump, bit) then // если насос выключен
vrPump_Run := mqtt_pump_Run
else // если насос включен, то сбрасываем бит включения
begin
vrPump_Run := false;
mqtt_pump_Run := false;
end;
end;
Но при вызове процедуры возникает ошибка
Gom_ControlPump_Run(mqtt_Gom_Run_pump5.Value, drskGom_SN5_Run.Value, drskGom_State_Pump57.AsInt, 2);
видимо потому что mqtt_Gom_Run_pump5.Value и drskGom_SN5_Run.Value это свойства переменной, а не сама переменная.
Но как тогда правильно сделать?
Здравствуйте.
Если в процедуру необходимо передавать переменные в качестве параметра, то для этого переменные необходимо объявлять как класс "TM_Variable":
procedure GomControlPumpRun(AMqttPumpRun, APumpRun, AStatePump: TM_Variable; bit: Byte);
begin
if AMqttPumpRun.AsBool then
if not GetBit(AStatePump.AsInt, bit) then
APumpRun.Value := AMqttPumpRun.AsBool
else
begin
APumpRun.Value := False;
AMqttPumpRun.Value := False;
end;
end;
Вызов процедуры:
GomControlPumpRun(mqtt_Gom_Run_pump5, drskGom_SN5_Run, drskGom_State_Pump57, 2);