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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.02.2012, 16:20
ANDRON94 ANDRON94 вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 5
Репутация: 10
По умолчанию Функция Assigned()

Имею вот такой код:
Код:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var Pick:PNewtonBody;
begin
if Button=mbRight then
   begin
  if Assigned(Pick) then NewtonBodySetForceAndTorqueCallBack(PIck, Gravity);
 end;
end;
Хочу чтобы при нажатии правой клавиши мыши к телу на которое я кликаю(я так понимаю это Pick) прикладывалась сила Gravity. По идее функция Assigned(pick) проверяет является ли данное тело физ. объектом, но куда я не кликал на физ. тело или нет функция постоянно срабатывает и ящик падает. получаетсся что указатель Pick всегда не nil. Помогите, что бы код работал корректно.


ЗАБЫЛ ДОБАВИТЬ . . . . . . . . .



Появилась ошибка(вернее она была, просто забыл сказать):"Access violation at address 10032D8 iun module 'Newton.dll'. Write of address 0000041C'. Ошибка срабатывает в момент нажатия правой кнопкой мыши и коробка не падает, хотя я и говорил что падает, но это не так. Вывод мне ясен переменная Pick ни на что не указывает, просьба та же: Как корректно оформить код?

Последний раз редактировалось ANDRON94, 13.02.2012 в 21:00.
Ответить с цитированием
  #2  
Старый 13.02.2012, 21:41
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Что то я не вижу в коде строк, где эта переменная определяется. Есть её описание и попытка использовать.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 13.02.2012, 23:47
ANDRON94 ANDRON94 вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

Кажется в этом проблема, я заблуждался в функции Assigned() раньше я думал что она осуществляет проверку являлось ли нажатое тело с тем же типом что и указатель.
если var pick:TButton то я думал что Assigned(Pick) проверяетчто я нажал: кнопку или нет. Но на самом деле Assigned(Pick) не определяет переменную а всего лишь смотрит пустой адрес или нет. Теперь я знаю как ее определить, но если возникнут вопросы я их задам, тему пока не закрывайте!!!!!!!!!!
Ответить с цитированием
  #4  
Старый 14.02.2012, 09:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

в справке написано же:
Цитата:
Delphi syntax:

function Assigned(const P): Boolean;

Description

Use Assigned to determine whether the pointer or procedure referenced by P is nil. P must be a variable reference of a pointer or procedural type. Assigned(P) corresponds to the test P<> nil for a pointer variable, and @P <> nil for a procedural variable.

Assigned returns false if P is nil, true otherwise.

Note: Assigned can't detect a dangling pointer--that is, one that isn't nil but no longer points to valid data. For example, in the code example for Assigned, Assigned won't detect the fact that P isn't valid.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #5  
Старый 14.02.2012, 12:24
ANDRON94 ANDRON94 вне форума
Прохожий
 
Регистрация: 10.10.2011
Сообщения: 5
Репутация: 10
По умолчанию

Я понял в чем проблема, но еще нужно поработать, пока код не работает
НО ОН ЗАРАБОТАЕТ!!!!!!!!!!!!!!!!!!!!!!!!!
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter