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

Тема: Разыменование неверного указателя

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Пользователь
    Регистрация
    20.07.2021
    Адрес
    Москва, Тула
    Сообщений
    49

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Через ARRAY [..] OF POINTER TO circuit.
    Спасибо за подсказку. Так работает.
    Код:
    PROGRAM PLC_PRG
    VAR
    	iNC :INT; //номер контура
    	iSD :INT; //номер элемента массива в SlaveData
    	
    	ptCol :ARRAY [28..54] OF POINTER TO circuit;
    	ptrCol :ARRAY [28..54] OF POINTER TO circuit_ret;
    
    	astCol_5 :ARRAY [28..37] OF circuit;
    	astCol_8 :ARRAY [49..54] OF circuit;
    	
    	stSlaveData: slave_data;
    END_VAR
    
    VAR RETAIN
    	astrCol_5 :ARRAY [28..37] OF circuit_ret;
    	astrCol_8 :ARRAY [49..54] OF circuit_ret;
    END_VAR
    
    iSD:=0;
    FOR iNC:=28 TO 37 DO
    	ptCol[iNC]:= ADR(astCol_5[iNC]);
    	ptrCol[iNC]:= ADR(astrCol_5[iNC]);
    	PLC_PRG.CONTR_CIRC();
    END_FOR
    
    FOR iNC:=49 TO 54 DO
    	ptCol[iNC]:= ADR(astCol_8[iNC]);
    	ptrCol[iNC]:= ADR(astrCol_8[iNC]);
    	PLC_PRG.CONTR_CIRC();
    END_FOR
    Разыменование теперь, естественно, выглядит иначе.
    Код:
    rInput:=ptCol[iNC]^.rOutInPercent
    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Это не задача. Это выбранное вами решение.
    Но, в любом случае, не проще ли в структуру добавить поле с "номером физической установки", и сделать прозрачную нумерацию массивов? (с 0 или 1)
    Согласен, когда речь идет о разовом проекте. Когда таких шкафов более 60 и различаются они только количеством и порядковыми номерами устройств, а алгоритмы для каждого одинаковы, есть желание задуматься об удобстве и унификации.
    Последний раз редактировалось Paha1977; 06.03.2023 в 20:02.

Похожие темы

  1. Как записать по адресу указателя?
    от Загнетов в разделе ПЛК1хх
    Ответов: 26
    Последнее сообщение: 12.01.2024, 04:34
  2. Инициализация указателя
    от drvlas в разделе ПЛК1хх
    Ответов: 17
    Последнее сообщение: 07.06.2016, 19:28
  3. Ответов: 29
    Последнее сообщение: 20.02.2012, 05:44

Ваши права

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