IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Дин. память в объекте, Проблемы при вызове конструктора содержашего "New(head)" hea
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Имеется следующая проблема, уже целый день с ней мучаюсь, имеется объект который в своём конструкторе выделяет память "голове и хвосту" списка, с которым собственно и работает объект ("голова и хвост" описаны в привэйт), но при вызове в событии создания формы вылетает ошибка, что делать? И как с этим бороться и какие фундаментальные причины произошедшего?

Добавлено через 2 мин.
Выдаёт ошибку как будто не может выделить память под типизированные указатели....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Конструктор вызывается не "в стиле Паскаля", случайно?

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


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Вот значит объявление класса:
Код

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?

Сообщение отредактировано: Baumanec -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
А вот так я его вызываю
А вот так вызывать не пробовал:
procedure TForm2.FormCreate(Sender: TObject);
begin
s1 := TStekff.Create;
s2 := TStekff.Create;
end;
?

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

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской

Репутация: -  0  +


Да, было видно, спасибо...

Сообщение отредактировано: Baumanec -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.10.2020 10:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name