Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта

21.08.2018, 23:03. Показов 1014. Ответов 12

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как написать программу так чтобы не вылезала ошибка?

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
uses graphabc;
 
type
  box = class
    x, x1, y, y1: integer;
  end;
 
type
  player = class
    pic: picture;
    x, y: integer;
    hitbox: array [1..3] of box;
  end;
 
{procedure PlaneMove(x, y, mb: integer);
begin
if (mb=1)
end;}
 
var
  pl: player;
  bg: picture;
 
begin
  setwindowsize(500, 800);
  window.CenterOnScreen;
  window.IsFixedSize := true;
  //floodfill(1, 1, clblack);
  bg := picture.Create('data\background1.png');
  bg.Draw(0, -6700);
  pl := new player();
  pl.pic := picture.Create('data/Plane.png');
  pl.x := 202;
  pl.y := 700;
  pl.pic.Draw(pl.x, pl.y);
  
  //=========[hitbox1]=========\\
  pl.hitbox[1].x := pl.x + 24;
  pl.hitbox[1].x1 := pl.x + 41;
  pl.hitbox[1].y := pl.y + 2;
  pl.hitbox[1].y1 := pl.y + 96;
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.08.2018, 23:03
Ответы с готовыми решениями:

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Нужно нарисовать 100 пикселей в случайном порядке Выдаёт ошибку не выводит пиксели на экранuses GraphABC; type tLocation=class ...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Изучаю паскаль и тут такая проблемка вышла,которую не знаю как решить Суть проблемы такова: нужно сделать проверку на то,находится ли...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Здравствуйте. Подскажите пожалуйста как решить эту проблему: Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта....

12
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
21.08.2018, 23:34
Вам необходимо выделить память под классы(изначально они равны nil), например
Pascal
1
 box:= new Box
Почитайте справочник, там много всего интересного написано(и про классы тоже)
0
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12
21.08.2018, 23:55  [ТС]
всё равно не работает, выдаёт ошибку "ожидалась переменная"
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
21.08.2018, 23:59
Ну так вот у Вас переменная
Pascal
1
p1:=new Player
0
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12
22.08.2018, 00:02  [ТС]
Если не трудно можете весь код с исправлением скинуть
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
22.08.2018, 00:12
PМне сейчас компьютер не доступен, я с телефона пишу

Добавлено через 2 минуты
Просто попробуйте поставить
Pascal
1
p1:=new Player
перед
Pascal
1
Setwindowsize(500,800)
0
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12
22.08.2018, 00:21  [ТС]
всё равно не работает
Миниатюры
Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта  
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
22.08.2018, 00:23
Box:= new Box уберите
0
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12
22.08.2018, 00:30  [ТС]
Ничего не изменилось, ошибка такая же как и в начале. Может Вы не заметили, в классе player массив hitbox типа box. Думаю ошибка из-за этого, но как исправить не знаю.
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
22.08.2018, 00:35
Тогда подождите когда Вам кто нибудь поумнее напишет или до завтра(это конечно не моё дело, но на светлую голову больше светлых мыслей приходит, так что можно и поспать)

Добавлено через 1 минуту
Если Вам никто не ответит я завтра часов в 10 напишу уже точно
0
0 / 0 / 0
Регистрация: 21.08.2018
Сообщений: 12
22.08.2018, 00:49  [ТС]
Хорошо, спасибо)
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
22.08.2018, 07:14
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
uses graphabc;
 
const
  back1name = 'data\background1.png';
  planeName = 'data/Plane.png';
 
type
  box = class
    x, x1, y, y1: integer;
    
    constructor (x_, x1_, y_, y1_ : Integer);
    begin
      x := x_; x1 := x1_; y := y_; y1 := y1_;
    end;
  end;
 
type
  player = class
    pic: picture;
    x, y: integer;
    hitbox: array [1..3] of box;
    
    constructor (x, y : Integer; picName : String);
    begin
      self.x := x; self.y := y;
      pic := New Picture(picName);
    end;
    
    procedure Draw := pic.Draw(x, y);
    
    procedure initBox(n, x_, x1_, y_, y1 : Integer) := hitbox[n] := New box(x + x_, x + x1_, y + y_, y + y1);
  end;
 
begin
  setwindowsize(500, 800);
  window.CenterOnScreen;
  window.IsFixedSize := true;
  var bg := picture.Create(back1name);
  bg.Draw(0, -6700);
  var pl := new player(202,700,planeName);
  pl.Draw;
  
  //=========[hitbox1]=========\\
  pl.initBox(1, 24, 41, 2, 96);
end.
0
79 / 49 / 23
Регистрация: 15.07.2018
Сообщений: 255
22.08.2018, 09:35
Solomkka, Вот ваш код
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
uses graphabc;
 
type
  box = class
    x, x1, y, y1: integer;
  end;
 
type
  player = class
    pic: picture;
    x, y: integer;
    hitbox: array [1..3] of box;
  end;
 
{procedure PlaneMove(x, y, mb: integer);
begin
if (mb=1)
end;}
 
var
  pl: player;
  bg: picture;
 
begin
  setwindowsize(500, 800);
  window.CenterOnScreen;
  window.IsFixedSize := true;
   //floodfill(1, 1, clblack);
  bg := picture.Create('data\background1.png');
  bg.Draw(0, -6700);
  pl := new player();
  pl.pic := picture.Create('data/Plane.png');
  pl.x := 202;
  pl.y := 700;
  pl.pic.Draw(pl.x, pl.y);
  ///Инициализация массива Hitbox
  for var i := 1 to 3 do
    pl.hitbox[i] := new box;
   //=========[hitbox1]=========\\
  pl.hitbox[1].x := pl.x + 24;
  pl.hitbox[1].x1 := pl.x + 41;
  pl.hitbox[1].y := pl.y + 2;
  pl.hitbox[1].y1 := pl.y + 96;
end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2018, 09:35
Помогаю со студенческими работами здесь

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Искал на форуме ничего путного не нашёл(тапками не кидайтесь). uses GraphABC,ABCobjects; var object1:rectangleABC;spPl:integer;...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Доброго времени суток. Компилятор выдает ошибку (Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта.) на 70...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Добрый день. Решил сделать платформер на pascalABC.net, и встретился с такой ошибкой в 20 строке: Ошибка времени выполнения: Ссылка на...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Работаю над игрой. Хочу чтобы объект2 разрушался в то время, когда объект1 подошел к нему. Пользуюсь командой "Destroy", но...

Ошибка времени выполнения: Ссылка на объект не указывает на экземпляр объекта
Нужно составить программу для создания и обработки односвязного списка. Прjцедура sum-находит общую стоимость всех товаров из списка....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru