Форум: "Начинающим";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];
ВнизКак считать данные word из массива byte Найти похожие ветки
← →
vann (2009-12-25 07:32) [0]Я имею в памяти массив двоичных данных, содержащий множество значений разной длины. Массив объявлен как
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]);
но можно ли за одну оперцию считать слово или двойное слово из такого массива?
← →
MBo © (2009-12-25 08:05) [1]PWord(@mas[i])^
← →
vann (2009-12-25 08:14) [2]Спасибо!!! Работает!
← →
Anatoly Podgoretsky © (2009-12-25 13:01) [3]> vann (25.12.2009 07:32:00) [0]
Это как же ты узнаешь какой тип у ячейки, ведь подобной информации в массиве нет.
← →
Amoeba © (2009-12-25 13:23) [4]
> Anatoly Podgoretsky © (25.12.09 13:01) [3]
>
> > vann (25.12.2009 07:32:00) [0]
>
> Это как же ты узнаешь какой тип у ячейки, ведь подобной
> информации в массиве нет.
Будем надеяться, что автору известно заранее какова последовательность типов в массиве.
← →
Anatoly Podgoretsky © (2009-12-25 13:41) [5]Если автору заранее известана последовательность типов в массиве, то автор должен написать RECORD а не массив. Вне зависимости от того, что известно автору макссив здесь не подходит.
← →
Amoeba © (2009-12-25 14:13) [6]
> Anatoly Podgoretsky © (25.12.09 13:41) [5]
>
> Если автору заранее известана последовательность типов в
> массиве, то автор должен написать RECORD а не массив. Вне
> зависимости от того, что известно автору макссив здесь не
> подходит.
Не обратил внимание на то, что массив у автора короткий. Тогда действительно - record должно использовать.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.02.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c