Нюанс тут простой - основа этого массива - байты. Байт может быть расположен по любому адресу > начатся этот массив байт (как и string) может с любого адреса > buf[0] ничего не изменит.

Перед массивом нужно разместить dword/real/struct/fb/pointer. Это выровняет массив под кварту.Например :

ptr: POINTER TO DWORD;
buf: ARRAY [0..31] OF BYTE;
val: DWORD;
crash: BOOL;