Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамическое создание объекта
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Rian
Проконсультируйте, на сколько не правильно создавать так:
что произойдёт с информацией в шестом элементе?
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;
andriano
Шестого элемента в массиве нет.
Поэтому "насколько неправильно" быть не может, - это просто "неправильно".

Произойдет порча памяти, т.е. ты будешь пытаться сождать объект в ячсейках памяти, которые предназначены для чего-то другого (чего - пог данному фрагменту восстановить нельзя), в результат как только программа дойдет до обработки того, что должно быть записано в этих ячейках, случится нечто непрогнозируемое. Обычно программа в этом случае вылетает по ошибке, причем диагностика ошибки может не иметь ничего общего с реальностью.
Впрочем, если включена проверка на выход за пределы массива, то именно с этой диагностикой программа и вылетит.
Rian
Цитата(andriano @ 20.04.2008 13:47) *

Произойдет порча памяти,


Спасибо,
поставил после массива строку, четыре символа стираются указателем напроч.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.