EAccessViolation

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Pepper
Сообщения: 33
Зарегистрирован: 21 фев 2004, 23:50
Откуда: Мурманск
Контактная информация:

Приветствую всех!
Проблема вот в чем: хочу создать новый объект (для простенькой игрушки):

Код: Выделить всё

  TEnemy = class
    Level:  TLevel;
    Energy: TEnergy;
    Coords: TCoordinate;
    ................................
    Constructor Create(const PictureLevel: TPictureLevel; const EOwner:                                      TWinControl;  const NewEnemy: shortint);              
    .................................          
  end;
Потом описываю метод Create:

Код: Выделить всё

constructor TEnemy.Create(const PictureLevel: TPictureLevel; const EOwner: TWinControl; const NewEnemy: shortint);
begin

  randomize;
  Level := Random(3);      // Срабатывает исключительная ситуция  EAccessViolation

  Coords.x := Random(EOwner.Width); // Срабатывает исключительная ситуция  EAccessViolation
  Coords.y := 0;
  ......................................
Получается, что я обращаюсь к неверному адресу памяти, но я думал, что это обычно происходит с указателями... А когда я вместо, например, Level пишу локальную переменную, то все срабатывает.. Почему так происходит?
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

объявление TLevel в студию
Изображение
Ответить