![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Привет. Грустно это... указатели такая хорошая штука, а делфи... или это может я че не так делаю?
Короче к делу. Создаю я шахматы (зачетная работа у меня такая ![]() Класс 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
|
|||
|
|||
![]() Тебе не нужен указатель на фигуту, т.к. любая переменная класса в Дельфи есть указатель!!!.
А если делаешь так, то разименовывай указатель принудительно там, где их используешь: Код:
if (pole[x,y].fig <> nil) and (pole[x,y].fig^.player <> nextMove) |
#3
|
|||
|
|||
![]() эм... тогда для каких целей нужен принудительный указатель?
![]() а это точно что все переменные - указатель? странно это... Последовал совету - все воркает! СПАСИБО |
#4
|
||||
|
||||
![]() Не все переменные, а переменные-классы.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |