Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.20;
Скачать: 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 вся ветка

Текущий архив: 2007.05.20;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.03 c
3-1172416665
Mr. D.
2007-02-25 18:17
2007.05.20
Управление доступом к отдельным полям


1-1174826542
Midnighter
2007-03-25 16:42
2007.05.20
Получить указатель на объект из интерфейса


2-1177570495
PL
2007-04-26 10:54
2007.05.20
Не могу понять в чем проблема


2-1177396233
cj
2007-04-24 10:30
2007.05.20
TreminateProcess


2-1178093914
Perf2k2
2007-05-02 12:18
2007.05.20
ListView: как проверить, выеделена ли пустая строка или нет?