Ну раз ждут :
X := Z; (* *)
VAR_CONST
Z : этот_же_тип;
END_VAR
Для таких задач памяти - как грязи.
PS
Некие люди как-то очень сильно переживали про отсутствие жесткого контроля типов под указателями.
Ну раз ждут :
X := Z; (* *)
VAR_CONST
Z : этот_же_тип;
END_VAR
Для таких задач памяти - как грязи.
PS
Некие люди как-то очень сильно переживали про отсутствие жесткого контроля типов под указателями.
VAR CONSTANT наверное. Было бы элегантное решение если б только не...VAR_CONST
Z : этот_же_тип;
END_VARCannot convert 'ARRAY [0..10] OF INT' to 'ARRAY [0..11] OF INT'.Ночами не сплю и ем плохо.Некие люди как-то очень сильно переживали про отсутствие жесткого контроля типов под указателями.
Да и сonst не обязательно.
var
z,x : ..
end
x := z;
Просто не нужно писать в z
этот же тип ?
А еще бывают синонимы типовCannot convert 'ARRAY [0..10] OF INT' to 'ARRAY [0..11] OF INT'.
подскажите пожалуйста, какой в ST синтаксис по части присвоения переменным Set/Reset ? надо по приходу одного сигнала ставить переменную в Set, а по приходу другого - в Reset.
if пришел_один_сигнал then
переменная := Set;
end_if
if пришел_другой_сигнал then
эта_или_другая_переменная := Reset;
end_if
Во общем - как спросили.
ну да, какой вопрос, такой и ответ. хорошо, переформулирую. согласно документации:
"Обмотки могут быть с "самофиксацией" типов SET и RESET. Обмотки типа SET обозначаются буквой "S" внутри круглых скобок (S). Если соответствующая этой обмотке переменная принимает значение ИСТИНА, то она навсегда (до сброса R) сохраняет его.
Обмотки типа RESET обозначаются буквой R. Если соответствующая переменная принимает значение ЛОЖЬ, то она навсегда (до установки S) сохраняет его."
как мне чему-то в ST сказать, что оно (S) или (R) ?
Задумайтесь немного о читаемости. Чтобы понять, что это обнуление, вам придётся весь юнит разобрать.Да и сonst не обязательно.
var
z,x : ..
end
x := z;
Просто не нужно писать в z
этот же тип ?
peremennaja_dlja_obnulenija_massiva_razmerom_10_el ementov_v_kotoruyu_nichego_nelzya_zapisyvatа если будет более понятное название peremennaja_dlja_obnulenija
Нет, правда... Я осознаю корявость копирования через SysMemCpy по сравнению с естественным X := Y, но обнуление присваиванием нулевой неконстантной переменной это лечение зубов не через рот. Вот.
Егор, большинство число моих поу состоит из 5..20 строчек, c 5..10 переменными.Некий сброс чего-то там - стандартная ситуация c присвоением специального значения. И необязательно нуля. Поэтому лично я для не парения моска в таких случаях рядом объявляю переменную с префиксом z
Код:PROGRAM Clock VAR_OUTPUT STD : SystemTimeDate; END_VAR VAR zSTD : SystemTimeDate; zST64,ST64 : SysTime64; Get : CurTimeEx; END_VAR STD := zSTD; ST64 := zST64; Get( SystemTime := ST64, TimeDate := STD );Думаю что здесь комментариев не нужно, не говоря о разборе z..Чтобы понять, что это обнуление, вам придётся весь юнит разобрать.
Представьте что значение сброса для массива вордов - 12345. И придется циклы внедрять, т.е. код переделывать.
А константа - это подсказка компилятору о защите по записи, которую я, заметьте, лично сам установил
Я очень даже люблю указатели, все библиотечки на них, но работать с ними на ровном месте, по-моему, ни к чему.