Новые форумы для: пользователей, администраторов, математиков и филологов.
0

Имеем

    var mas: array [1..100] of integer;
        PMas:pointer;
        b:byte;

    begin
         PMas:=addr(mas);
// mas[3]:=$23AFC421, нужно получить 2 байт 3 элемента массива через указатель PMas, т.е. b должно быть равно AF (или при доступе к 2-ому байту мы получим C4? Поправьте меня).   
    end;

задан 22 Фев 18:51

%D0%BE%D0%BB%D0%BE%D0%BB%D0%BE's gravatar image

ололо
21319
97% принятых

изменен 22 Фев 20:00

0

Проще отказаться от указателей:

  1. получить элемент массива
  2. сдвинуть число влево
  3. наложить маску

То есть сделать так (извлекаем биты №8-№15):

 program test;

 var Z: array [1..3] of integer = (1000,2000,3000);
 var Y: integer;
 var X: byte;
 var N: integer = 1; { Номер байт для извлечения }

 begin
  Y := Z[2];
  X := (Y SHR (N * 8)) AND $FF;
  writeln(X);
 end.
ссылка

отвечен 23 Фев 11:01

%D0%91%D0%B5%D0%B3%D0%B5%D0%BC%D0%BE%D1%82's gravatar image

Бегемот
1.3k1212

Ваш ответ

Если вы не нашли ответ, задайте вопрос.

Здравствуйте

ХэшКод - это совместно редактируемый форум вопросов и ответов для начинающих и опытных программистов.

Присоединяйтесь!

отмечен:

×816

задан
22 Фев 18:51

показан
96 раз

обновлен
23 Фев 11:01

Отслеживать вопрос

по почте:

Зарегистрировавшись, вы сможете подписаться на любые обновления

по RSS:

Ответы

Ответы и Комментарии