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

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

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

Ответить
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

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

Сообщение Browny »

Уважаемые форумчане!
Снова вопрос..
Очень простой код:

Код: Выделить всё

Var hMyWindow:HWND;
 Begin
   hMyWindow:= NULL;
  ......
вызывает exception преобразования типов. Что-то странное с описанием типа Variant?

Конечно, можно присвоить 0, но ищу правильный вариант и причину.
SAK
постоялец
Сообщения: 158
Зарегистрирован: 17.02.2006 23:45:14
Откуда: Тим
Контактная информация:

Сообщение SAK »

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

В итоге: HWND = DWord;

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

При компиляции всё проходит, т.к. можно целочисленной переменной присваивать вариантное значение, а вот при выполнении идёт попытка преобразовать ничто (Null) к целочисленному типу, отсюда и ошибка.
Аватара пользователя
Browny
новенький
Сообщения: 37
Зарегистрирован: 31.08.2007 10:42:55

Сообщение Browny »

Спасибо!
Вопрос, собственно, возник в связи с реализацией в Lazarus'е. Так как уже привык видеть в описании, что такое-то сообщение возвращает результат такой-то, а иначе возвращает NULL.
Ответить