Помощь - Поиск - Пользователи - Календарь
Полная версия: Дин. память в объекте
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
Baumanec
Имеется следующая проблема, уже целый день с ней мучаюсь, имеется объект который в своём конструкторе выделяет память "голове и хвосту" списка, с которым собственно и работает объект ("голова и хвост" описаны в привэйт), но при вызове в событии создания формы вылетает ошибка, что делать? И как с этим бороться и какие фундаментальные причины произошедшего?

Добавлено через 2 мин.
Выдаёт ошибку как будто не может выделить память под типизированные указатели....
volvo
Конструктор вызывается не "в стиле Паскаля", случайно?

var obj: TObject;
...
Obj.Create(...); // <--- Так делать не надо
Obj := TObject.Create(...); // <--- Вот так надо
Если так и делаешь, и все равно ошибка - то показывай код, телепаты в отпуске...
Baumanec
Вот значит объявление класса:
Код

Type
  tM=array [1..nm] of integer;
  TStekff = class (TObject)
    private
      fz:tm;
      Fi:integer;
    public
      constructor Create;
      Function pop(out n:integer):boolean;
      Function push(const n:integer):boolean;
      Property i:integer Read fi write fi;
    end;

Вот его конструктор:
Код

constructor TStekff.Create;
begin
fi:=0;
end;

А вот так я его вызываю, хотя сначала да я его вызывал в стиле Паскаля...
Код

procedure TForm2.FormCreate(Sender: TObject);
begin
s1:=S1.Create;
s2:=s2.Create;
end;

Но всё равно не пашет, я даже убрал список и тупо использовал статический массив, всё равно выдаёт EAccessViolation, внутри конструктора класса...
У меня тупое предположение, может всё дело в моём дэльфи 2006?
volvo
Цитата
А вот так я его вызываю
А вот так вызывать не пробовал:
procedure TForm2.FormCreate(Sender: TObject);
begin
s1 := TStekff.Create;
s2 := TStekff.Create;
end;
?

Неужели из моего предыдущего поста не видно, что перед точкой должен стоять Тип, а не экземпляр типа (к тому же НЕинициализированный)?
Baumanec
Да, было видно, спасибо...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.