Проконсультируйте, на сколько не правильно создавать так:
что произойдёт с информацией в шестом элементе?
var
Form1: TForm1;
mas:array[1..5]of TButton;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
x:byte;
begin
x:=6;
mas[x]:=TButton.Create(owner);
mas[x].Parent:=form1;
end;
Шестого элемента в массиве нет.
Поэтому "насколько неправильно" быть не может, - это просто "неправильно".
Произойдет порча памяти, т.е. ты будешь пытаться сождать объект в ячсейках памяти, которые предназначены для чего-то другого (чего - пог данному фрагменту восстановить нельзя), в результат как только программа дойдет до обработки того, что должно быть записано в этих ячейках, случится нечто непрогнозируемое. Обычно программа в этом случае вылетает по ошибке, причем диагностика ошибки может не иметь ничего общего с реальностью.
Впрочем, если включена проверка на выход за пределы массива, то именно с этой диагностикой программа и вылетит.