Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 23

Тема: Указатели (POINTER)

  1. #11
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,245

    По умолчанию

    С помощью shr/shl и and, можно обойтись буз указателей и лишних переменных если что

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    потому что ADR возвращает DWORD, а не POINTER.
    Так в КДС нету "просто POINTER"

    to capzap
    А без указателей для TC - не обойтись. Или union (КДС3, см.выше), или я-ля union с размещением 2 переменных в одной области памяти с помощью % (есть ли в КДС3 ?).
    Только у TC сложно как-то. Там 2 строчки всего нужны. Но с rol ))
    Последний раз редактировалось Валенок; 03.09.2014 в 10:51.

  3. #13
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,245

    По умолчанию

    Превратить в реал да будет нужен указатель, но я то про перемещение байт имел ввиду, а rol это продвинутое смещение, примитив то всёравно shr

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

    По умолчанию

    Так в КДС нету "просто POINTER"
    Ну, да-да, POINTER TO _ТИП_ (в том числе POINTER TO ANY, между прочим, если речь о третьем кодесисе). Сути не меняет. ADR возвращает DWORD. Почему не могли сделать, чтобы возвращался указатель того же типа, что и аргумент, теперь остаётся только гадать.

  5. #15

    По умолчанию

    Наверное для того чтоб ты мог пихнуть свой массив или там структуру в любое место памяти ПЛК, где можно обявить прямоадресуемую переменную.

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

    По умолчанию

    чтоб ты мог пихнуть свой массив
    Хи-хи. Пример запихивания?

    Можно сказать, что в КДС нет функции или оператора получения указателя. Есть только функция получения адреса типа DWORD, что не является указателем в системе типов компилятора.

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

    По умолчанию

    Цитата Сообщение от Yegor Посмотреть сообщение
    Почему не могли сделать, чтобы возвращался указатель того же типа, что и аргумент..
    r : real;
    d : dword;

    sysmemcpy(adr(r),adr(d),4); //Cейчас - нормуль. Видимо при возврате того же типа что и аргумент - "тип мисмач", ведь real^ := dword^

    Наверно авторы подумали-подумали и махнули рукой - кому нужно разберутся, кто не разберется - нечего и трогать ^.

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

    По умолчанию

    "тип мисмач"
    Тайп мисмач не случается, когда есть неявное преобразование. В данном компиляторе REAL в DWORD неявно преобразовать нельзя, POINTER в DWORD — можно. Вот этот код демонстрирует неявное преобразование указательного типа в числовой
    Код:
    PROGRAM PLC_PRGVAR
        ptr1, ptr2: POINTER TO ARRAY [0..1] OF BYTE;
    END_VAR
    
    SysMemCpy(ptr1, ptr2, 1);
    На месте аргументов спокойно уже сейчас может стоять аналог ADR, возвращающий не число, а указатель, но такого аналога нет. Другими словами, операции взятия указателя в кодесисе просто нет. Указатели приходится заранее объявлять, а потом инициализировать через обратное приведение (тоже неявное — DWORD в POINTER).
    Последний раз редактировалось Yegor; 30.05.2015 в 19:09.

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

    По умолчанию

    Указатели приходится заранее объявлять
    Может kavoo имел ввиду

    Код:
    PROGRAM PLC_PRGVAR
        tr1, tr2: ARRAY [0..1] OF BYTE;
    END_VAR
    
    SysMemCpy(adr(tr1), adr(tr2), 1);
    без объявления указателей ?

    В данном компиляторе REAL в DWORD неявно преобразовать нельзя
    А много где можно именно преобразовать? И вроде выше - не преобразование, а другая точка зрения.
    Например - кирпич. Строитель видит материал для стр-ва, математик - параллепипед, повар - гнет для квашения.. Но объект при этом не меняется.

  10. #20
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,674

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Может kavoo имел ввиду

    Код:
    PROGRAM PLC_PRGVAR
        tr1, tr2: ARRAY [0..1] OF BYTE;
    END_VAR
    
    SysMemCpy(adr(tr1), adr(tr2), 1);
    без объявления указателей ?


    А много где можно именно преобразовать? И вроде выше - не преобразование, а другая точка зрения.
    Например - кирпич. Строитель видит материал для стр-ва, математик - параллепипед, повар - гнет для квашения.. Но объект при этом не меняется.
    Академики ! Вы наше все ! А , пролетариат , за неимением булыжника увидит в кирпиче оружие...

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Использование указателей Pointer
    от Андрей Плеханов в разделе ПЛК3хх
    Ответов: 23
    Последнее сообщение: 24.07.2014, 21:58
  2. Ответов: 23
    Последнее сообщение: 22.12.2010, 23:36
  3. POINTER TO what?
    от drvlas в разделе ПЛК (среда CoDeSys V2.3)
    Ответов: 34
    Последнее сообщение: 04.12.2010, 23:46

Ваши права

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