Хотя строки Delphi и массивы char связаны, они не совпадают.
Delphi перегружает присвоение строк и литералов (char и string) массиву символов, но только когда нижняя граница массиваноль.
Следующий код работает для меня в D2007 и Delphi XE:
var x : array[0..49] of char;
begin
x:='b'; // char literal
x:='bb'; // string literal
end.
Если я изменю [0 на [1, это не удастся.Это ограничение, вероятно, упрощает языковой помощник, который позаботится об этом, и, вероятно, эта функция предназначена только для работы с преобразованными структурами C, где массивы всегда имеют нижнюю границу 0.