Вниз
Скачать: CL | DM;

Динамический массив как поле класса   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.029 c
3-1172908676
Бабенко Олег
2007-03-03 10:57
2007.05.20
Перевод базы формата Firebird 2.0 в Firebird 1.5


2-1178054507
Антон Шестаков
2007-05-02 01:21
2007.05.20
Проверка всех файлов


6-1163695742
p314
2006-11-16 19:49
2007.05.20
ssl


2-1178108113
RomanLN
2007-05-02 16:15
2007.05.20
создание и редоктирование таблиц


1-1174481739
kilya
2007-03-21 15:55
2007.05.20
MDI формы




   Наверх