Не соблюдается выравнивание данных в памяти.
начальные адреса REAL должны быть кратны 4, при объявлении байтового массива его начальный адрес может быть случайным, далее если угадали положение dP, то потом вклиниваются байты 22 и 23 которые нарушают выравнивание. Надо объявить переменную REAL, и через ADR копировать
байты из массива, а не пытаться считать их через указатель.
Примерно так
varReal: REAL;
pReal: pointer to array[0..3] of byte;
pReal:=ADR(varReal);




Ответить с цитированием