Страница 56 из 1040 ПерваяПервая ... 646545556575866106156556 ... ПоследняяПоследняя
Показано с 551 по 560 из 10399

Тема: ВОПРОС-ОТВЕТ (отвечаем на простые вопросы от новичков)

  1. #551
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Ну раз ждут :

    X := Z; (* *)


    VAR_CONST
    Z : этот_же_тип;
    END_VAR

    Для таких задач памяти - как грязи.
    PS
    Некие люди как-то очень сильно переживали про отсутствие жесткого контроля типов под указателями.

  2. #552
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    VAR_CONST
    Z : этот_же_тип;
    END_VAR
    VAR CONSTANT наверное. Было бы элегантное решение если б только не...
    Cannot convert 'ARRAY [0..10] OF INT' to 'ARRAY [0..11] OF INT'.
    Некие люди как-то очень сильно переживали про отсутствие жесткого контроля типов под указателями.
    Ночами не сплю и ем плохо.

  3. #553
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Да и сonst не обязательно.
    var
    z,x : ..
    end

    x := z;

    Просто не нужно писать в z

    этот же тип ?
    Cannot convert 'ARRAY [0..10] OF INT' to 'ARRAY [0..11] OF INT'.
    А еще бывают синонимы типов

  4. #554

    По умолчанию

    подскажите пожалуйста, какой в ST синтаксис по части присвоения переменным Set/Reset ? надо по приходу одного сигнала ставить переменную в Set, а по приходу другого - в Reset.

  5. #555
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    if пришел_один_сигнал then
    переменная := Set;
    end_if

    if пришел_другой_сигнал then
    эта_или_другая_переменная := Reset;
    end_if

    Во общем - как спросили.

  6. #556

    По умолчанию

    ну да, какой вопрос, такой и ответ. хорошо, переформулирую. согласно документации:

    "Обмотки могут быть с "самофиксацией" типов SET и RESET. Обмотки типа SET обозначаются буквой "S" внутри круглых скобок (S). Если соответствующая этой обмотке переменная принимает значение ИСТИНА, то она навсегда (до сброса R) сохраняет его.
    Обмотки типа RESET обозначаются буквой R. Если соответствующая переменная принимает значение ЛОЖЬ, то она навсегда (до установки S) сохраняет его."

    как мне чему-то в ST сказать, что оно (S) или (R) ?

  7. #557
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Да и сonst не обязательно.
    var
    z,x : ..
    end

    x := z;

    Просто не нужно писать в z

    этот же тип ?
    Задумайтесь немного о читаемости. Чтобы понять, что это обнуление, вам придётся весь юнит разобрать.

  8. #558
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    а если будет более понятное название peremennaja_dlja_obnulenija
    peremennaja_dlja_obnulenija_massiva_razmerom_10_el ementov_v_kotoruyu_nichego_nelzya_zapisyvat

    Нет, правда... Я осознаю корявость копирования через SysMemCpy по сравнению с естественным X := Y, но обнуление присваиванием нулевой неконстантной переменной это лечение зубов не через рот. Вот.

  9. #559
    Пользователь
    Регистрация
    10.12.2009
    Адрес
    Воронеж
    Сообщений
    673

    По умолчанию

    Цитата Сообщение от anatolys Посмотреть сообщение

    как мне чему-то в ST сказать, что оно (S) или (R) ?
    переменная:=1 - SET
    переменная:=0 - RESET

    Наверное как то так

  10. #560
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,259

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    лечение зубов не через рот. Вот.

    Егор, большинство число моих поу состоит из 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. И придется циклы внедрять, т.е. код переделывать.
    А константа - это подсказка компилятору о защите по записи, которую я, заметьте, лично сам установил

    Я очень даже люблю указатели, все библиотечки на них, но работать с ними на ровном месте, по-моему, ни к чему.

Страница 56 из 1040 ПерваяПервая ... 646545556575866106156556 ... ПоследняяПоследняя

Метки этой темы

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •