Показано с 1 по 10 из 10

Тема: Нашел небольшой баг в ST

  1. #1

    По умолчанию Нашел небольшой баг в ST

    В функциях ST не инициализируются значения по умолчанию во входных переменных, в функциональных блоках все нормально
    Изображения Изображения
    Я не волшебник, я только учусь...

  2. #2

    По умолчанию

    Цитата Сообщение от AllXXX Посмотреть сообщение
    В функциях ST не инициализируются значения по умолчанию во входных переменных, в функциональных блоках все нормально
    Функции не имеют памяти, это азы программирования. На входы, каждый цикл, надо подавать значения, для её работы.
    Инициализировать входы внутри невозможно, они перезапишутся значениями на входе.
    Вы не баг нашли, а расписались в незнании теории.

    У вас ещё много открытий впереди, в вашем примере на выходе функции всегда будет 0, даже если на вход подать True.
    Последний раз редактировалось kondor3000; 29.10.2025 в 14:13.

  3. #3

    По умолчанию

    AllXXX Держи тебе подробное (моё) чтиво: https://cs-cs.net/funkciya-fun-i-fun...esys-owenlogic
    Если потратишь чуток времени - дофига вопросов отпадёт про функции и FB

    kondor3000 правильно пишет всё!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  4. #4

    По умолчанию

    Спасибо обязательно почитаю на досуге
    Я не волшебник, я только учусь...

  5. #5

    По умолчанию

    Нет. Желательно первым делом почитать, чтобы закрыть 90% всех вопросов
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  6. #6

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Нет. Желательно первым делом почитать, чтобы закрыть 90% всех вопросов
    Да прочел хорошая статья!
    Я не волшебник, я только учусь...

  7. #7

    По умолчанию

    Ура! Я писал сам, когда разбирался!

    Ещё добавлю комментарий вот какой: В ДРУГИХ средах разработки параметры по умолчанию для функций могут работать!
    То есть, это в OwenLogic не реализовано (или сделано криво).

    Например, в CodeSys последних версий (SP17) можно объявить функцию как
    Код:
    FUNCTION MyFun
    VAR_INPUT
        wParam1 : WORD;
        wParam2 : WORD := 10;
    END_VAR
    И вызывать так:
    Код:
    MyFun(10, 30);
    MyFun(200);
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  8. #8
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    12,986

    По умолчанию

    Типа это в ST только-только добавили, в то время как в других языках это давно было?
    Или это было, но никто не придавал значению?

    Развитие ST тогда радует

  9. #9

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Например, в CodeSys последних версий (SP17) можно объявить функцию как
    Код:
    FUNCTION MyFun
    VAR_INPUT
        wParam1 : WORD;
        wParam2 : WORD := 10;
    END_VAR
    И вызывать так:
    Код:
    MyFun(10, 30);
    MyFun(200);
    Эта фича прикольная, но бестолковая. Потому что в первом случае, инициализация на входе функции,
    а во втором, нет смысла в инициализации внутри, можно поставить просто константу. Всё равно снаружи уже не изменишь.

  10. #10

    По умолчанию

    kondor3000 Не понял! Ни разу она не бестолковая! Это опциональные аргументы. Как во всех других языках.
    Ты чего? Ни разу этим не пользовался вообще нигде? Я удивлён: ты же прям гуру и спец форума.
    Опциональные аргументы используют тогда, когда не надо их менять на свои, и когда стандартные значения устраивают

    Например, у меня есть функция, которая делает из WORD тип TIME, и имеет такие аргументы:
    wValue : WORD;
    bTimeInMunitues : BOOL := FALSE;

    Соответственно если я вызываю её так:
    CSWordToTime(132) - то знаю, что второй аргумент подставится как FALSE
    А если
    CSWordToTime(132, TRUE) - то явно подставляю аргумент как мне надо

    Это даже в WinAPI так было ещё с WIn 3.11
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

Похожие темы

  1. Ответов: 31
    Последнее сообщение: 17.03.2023, 20:33
  2. Ответов: 1
    Последнее сообщение: 18.10.2017, 09:03
  3. Подбор оборудования на небольшой объект.
    от zandaqo в разделе Подбор Оборудования
    Ответов: 24
    Последнее сообщение: 17.03.2017, 16:25
  4. Ответов: 22
    Последнее сообщение: 22.04.2016, 21:41
  5. Ответов: 2
    Последнее сообщение: 21.08.2015, 13:17

Ваши права

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