Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как считать данные word из массива byte [D7, WinXP]


vann ©   (2009-12-25 07:32:00) 

Я имею в памяти массив двоичных данных, содержащий множество значений разной длины. Массив объявлен как
var mas packed array[0..N] of byte;
но конкретные ячейки могут быть как byte, так и word и cardinal. Причем адреса каждой ячейки не выравниваются. Возникает проблема, как обратится к конкретной ячейке, если у нее тип word или cardinal, а адрес не кратен двум (4м)?
К примеру, в массиве следующие данные
01 60 1A 4C 06 24
при этом первое значение 01 как байт, считывается легко k:=mas[0];
но вот как прочесть значение word 60 1A? если просто обратиться ячейке 2(1), то будет считан только один байт,
var k: word;
k:=word(mas[1]);
конечно, есть варинат обращаться по байтам, а потом делать сдвиг, так:
k:=word(mas[1]) shl 8 or word(mas[2]);
но можно ли за одну оперцию считать слово или двойное слово из такого массива?


Amoeba   (2009-12-25 14:13:00) [1]


> Anatoly Podgoretsky ©   (25.12.09 13:41) [5]
>
> Если автору заранее известана последовательность типов в
> массиве, то автор должен написать RECORD а не массив. Вне
> зависимости от того, что известно автору макссив здесь не
> подходит.

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


Anatoly Podgoretsky   (2009-12-25 13:41:00) [2]

Если автору заранее известана последовательность типов в массиве, то автор должен написать RECORD а не массив. Вне зависимости от того, что известно автору макссив здесь не подходит.


Amoeba   (2009-12-25 13:23:00) [3]


> Anatoly Podgoretsky ©   (25.12.09 13:01) [3]
>
> > vann  (25.12.2009 07:32:00)  [0]
>
> Это как же ты узнаешь какой тип у ячейки, ведь подобной
> информации в массиве нет.

Будем надеяться, что автору известно заранее какова последовательность типов в массиве.


Anatoly Podgoretsky   (2009-12-25 13:01:00) [4]

> vann  (25.12.2009 07:32:00)  [0]

Это как же ты узнаешь какой тип у ячейки, ведь подобной информации в массиве нет.


vann   (2009-12-25 08:14:00) [5]

Спасибо!!! Работает!


MBo   (2009-12-25 08:05:00) [6]

PWord(@mas[i])^


Наверх

Титульная страница Поиск, карта сайта Написать письмо