Два способа сделать это:
var
P: PByte;
....
P := @Buffer[0]; // no cast, compiler can check type safety
P := PByte(Buffer); // implementation detail, dynamic array variable is pointer to first element
Обратите внимание, что первый приводит к ошибке диапазона, если включена проверка диапазона и массив пуст.Из-за этого я предпочитаю последнее, хотя вы можете критиковать приведение прямого указателя за отсутствие безопасности типов.