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

Тема: POINTER TO what?

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,177

    По умолчанию

    Начнем с простого:
    ... Пойду удавлюсь.
    Когда лопнет веревка, открываем литературу по ЛЮБЫМ языкам программирования, и изучаем типы, типытипы(и особенно - их размеры)
    Не забываем что pointer - сам по себе тоже тип.

    А pointer to что-то :

    1.Директива компилятору - как использовать бессмысленный набор байтов по указанному адресу.
    2.Вытекает из 1. и (ВНИМАНИЕ !) какое кол-во этих байтов


    Ошибка 1. (Толстая)
    pDWsour := ADR(W); (* Source is wrong *)
    ...
    pDWdest := ADR(DW2); (* Destin is right *)
    ...
    pDWdest^ := pDWsour^ +1; (* DW <= W, fetch throu pDW *)
    pDWdest^:= word_to_dword( dword_to_word( pDWsour^)) +1;
    (word_to_dword конечно же избыточен,но показывает ход преобразований)
    или проще
    := ( pDWsour^ and 16#0000_FFFF ) + 1;


    Ошибка 2. (Тоньше 1.)

    VAR
    ......
    W4: WORD;
    pWsour: POINTER TO WORD;

    pWdest: POINTER TO WORD;
    END_VAR

    pDWsour := ADR(W); (* Source is wrong *)
    pWsour := ADR(DW);
    pWdest := ADR(DW4); (* Destin is wrong *)
    pDWdest := ADR(W4);
    pDWdest^ := pDWsour^ +1; (* W <= W throu pDW *)
    Опс. Здесь мы гробим pWsour. (Понятно как ?)
    И в :
    pWdest^ := pWsour^ +1; (* DW <= DW throu pW *)
    Пытаемся прочитать х.з. откуда, что иногда приводит к :

    Доступ по несуществующему адресу. ПЛК остановлен
    (Слава Богу, что мы не управляли котельней!)
    Её-то Михалыч отремонтирует. А если б а.реактором ?
    И если приспичило :

    pDWdest^[/U] := pDWsour^ +1
    то придется применять проктологические методы

    pDWdest^ := ( pDWdest^ and 16#FFFF_0000 ) or ( ( pDWsour^ + 1 ) and 16#0000_FFFF );

    Сможете пояснить смысл этого действа ?



    PS
    Взяли на понт. Остались детки без подарков .......
    Последний раз редактировалось Валенок; 01.12.2010 в 19:04.

Ваши права

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