![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как считать данные 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])^