Здравствуйте, <Аноним>, Вы писали:
А>a: array[1..10] of byte;
А>b: Longword;
А>Если просто написать b:=a[3] — b будет равно байту №3 массива,
А>а мне нужно чтобы он брал четыре байта (размер Longword) начиная с 3го.
А>Как это сделать?
type
PLongWord = ^LongWord;
b := PLongWord(@a[3])^;
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, Аноним, Вы писали:
А>a: array[1..10] of byte;
А>b: Longword;
А>Если просто написать b:=a[3] — b будет равно байту №3 массива,
А>а мне нужно чтобы он брал четыре байта (размер Longword) начиная с 3го.
А>Как это сделать?
Не понял, как из байта можно вычесть четыре байта?
Для того, чтобы получить доступ к третьему байту b можно сдвинуть и выделить по маске:
b := a[3] - (b shr 16) and 255
По идее можно получить байт через обьявление другого типа:
type
TDWordHack = packed record
b1, b2, b3, b4: byte
end;
b:= a[3] - TDWordHack(b).b3;
Кажется должно работать