Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
ВнизДинамический массив как поле класса Найти похожие ветки
← →
Ornelius © (2007-04-28 00:43) [0]у меня возникла проблема при инициализации динамичекого массива (поля класса) процедурой SetLength в конструкторе этого класса. Возникает ошибка распределени я памяти.
Вот мой код:
Type
TModel = class
private
Glass: array of real;
public
constructor Create(n:Integer);
end;
var model:TModel;
//=====================
implementation
constructor TModel.Create(n: Integer);
begin
SetLength(Self.Glass, n);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
model.Create(4); //<-вот здесь воникает ошибка.
//дело в том, что в этом месте указатель на экземпляр класса
//почему-то null. Те переменная model почему-то null.
//Видимо, проблема в этом
end;
ЗЫ: самое интересное: когда я не использовал встроенные динамические массивы, а работал напрямую с динамической памятью(процедуры типа GetMem) тоже возникла очень нетривиальная ошибка(как-то неправильно происходило присвоение по указателю). Мне сказали: "Пользуйся встроенными средствами для работы с динамической памятью"... И вот результат))
← →
Alx2 © (2007-04-28 01:09) [1]> model.Create(4); //<-вот здесь воникает ошибка.
model := TModel .Create(4);
← →
Servelat © (2007-04-28 01:10) [2]Идти читать умные книги.
Экземпляры объектов создают так:
ObjInstance := TObjClass.Create();
← →
Германн © (2007-04-28 01:13) [3]
> model.Create(4); //<-вот здесь воникает ошибка.
> //дело в том, что в этом месте указатель на экземпляр класса
> //почему-то null. Те переменная model почему-то null.
> //Видимо, проблема в этом
А чему ты так удивляешься? Не понимаешь разницы между вызовом TModel.Create и model.Create? Книжки читай. Хэлп тоже поможет. Только "динамические массивы" тут уж точно не виноваты.
← →
Ornelius © (2007-04-28 01:14) [4]Спасибо. Туплю. Наверное, нужно не 100, а 300 раз наступить на одни и те же грабли, чтобы понять, что больше так делать не нужно))
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c