Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.11.2008, 22:44
PAFOS PAFOS вне форума
Прохожий
 
Регистрация: 07.11.2008
Сообщения: 2
Репутация: 10
По умолчанию Указатели и классы

Привет. Грустно это... указатели такая хорошая штука, а делфи... или это может я че не так делаю?

Короче к делу. Создаю я шахматы (зачетная работа у меня такая ). У меня есть класс Cell1 = class(TShape) - это класс клетки шахматной доски, а также есть класс Figure = class(TImage) - это базовый класс для всех шахматных фигур.

Класс Figure имеет property player:boolean read GetPlayer write setPlayer;, который указывает принадлежность фигуры к игроку.

Класс Cell1 имеет параметр fig : ^Figure; - указатель на фигуру, стоящую на этой клетке, если фигуры нет, то nil

Вся доска - есть массив pole: array[1..8,1..8] of Cell1; (объявлен как глобальная переменная)

В чем суть проблемы:
в одном из методов класса Figure есть строчка

if (pole[x,y].fig <> nil) and .... - тут все нормально, но стоит только сделать так:
if (pole[x,y].fig <> nil) and (pole[x,y].fig.player <> nextMove) как генерируется ошибка Access voilation at address ...

отладчик показывает что значение параметра pole[x,y].fig = @значение, но по поводу параметров этого самого fig говорит - innaseble value.

КТО МОЖЕТ ПОМОГИ ПЛИЗ!!!
Ответить с цитированием
  #2  
Старый 07.11.2008, 23:13
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,057
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Тебе не нужен указатель на фигуту, т.к. любая переменная класса в Дельфи есть указатель!!!.

А если делаешь так, то разименовывай указатель принудительно там, где их используешь:

Код:
if (pole[x,y].fig <> nil) and (pole[x,y].fig^.player <> nextMove)
Ответить с цитированием
  #3  
Старый 08.11.2008, 10:44
PAFOS PAFOS вне форума
Прохожий
 
Регистрация: 07.11.2008
Сообщения: 2
Репутация: 10
По умолчанию

эм... тогда для каких целей нужен принудительный указатель?
а это точно что все переменные - указатель? странно это...

Последовал совету - все воркает! СПАСИБО
Ответить с цитированием
  #4  
Старый 08.11.2008, 15:50
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,906
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Не все переменные, а переменные-классы.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter