Нельзя присвоить NULL для Handle?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Нельзя присвоить NULL для Handle?

Сообщение Browny » 19.09.2007 16:01:34

Уважаемые форумчане!
Снова вопрос..
Очень простой код:
Код: Выделить всё
Var hMyWindow:HWND;
Begin
   hMyWindow:= NULL;
  ......
вызывает exception преобразования типов. Что-то странное с описанием типа Variant?

Конечно, можно присвоить 0, но ищу правильный вариант и причину.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение SAK » 19.09.2007 16:13:49

THandle = DWord;
HANDLE = System.THandle;
HWND = HANDLE;

В итоге: HWND = DWord;

Ищем описание NULL в модуле variants:
function Null: Variant; // Null standard constant

При компиляции всё проходит, т.к. можно целочисленной переменной присваивать вариантное значение, а вот при выполнении идёт попытка преобразовать ничто (Null) к целочисленному типу, отсюда и ошибка.
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Сообщение Browny » 19.09.2007 16:29:50

Спасибо!
Вопрос, собственно, возник в связи с реализацией в Lazarus'е. Так как уже привык видеть в описании, что такое-то сообщение возвращает результат такой-то, а иначе возвращает NULL.
Аватара пользователя
Browny
новенький
 
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 121

Рейтинг@Mail.ru