![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как корректно сравнить/присвоить Longint с Сишными TRUE и FALSE? [D7, XP]
Незарегистрированный © (2016-02-15 17:46:00)У меня довольно глупый вопрос по WinAPI... Точнее как с Си переводится на паскаль...
Вот что написано в доках:
> When the wParam parameter is FALSE,
> an application should return TRUE to бла-бла,
> or it should return FALSE to бла-бла-бла.
Делаю так:
if wParam=0 then result:=1;
Поведение вообще не такое как должно быть.
Си не изучал, только синтаксис понимаю. Подскажите пожалуйста - как правильно отобразить Сишные TRUE и FALSE в Паскаль?
Игорь Шевченко (2016-02-15 21:41:00) [1]
> Делаю так:
>
> if wParam=0 then result:=1;
Правильно делаешь
> Поведение вообще не такое как должно быть.
значит ошибка в другом месте
sniknik (2016-02-15 21:23:00) [2]> Или вы так предлагаете?:
> if wParam=Integer(BOOL(False)) then result:=Integer(BOOL(True));
просто
if wParam=Integer(False) then result:=Integer(True);
> Всё равно нет нужного поведения...
значения в коде выше смотрел?
Незарегистрированный (2016-02-15 19:09:00) [3]> не поверишь... пиши true и false будет однозначно.
wParam это WPARAM это Longint
result это LRESULT это тоже Longint
Просто "пиши true и false" даёт "Incompatible types: 'Integer' and 'Boolean'".
Или вы так предлагаете?:
if wParam=Integer(BOOL(False)) then result:=Integer(BOOL(True));
Всё равно нет нужного поведения...
гм. Перепишу-ка на Си, посмотрю как там будет работать. Может в доках опечатка?
sniknik (2016-02-15 18:54:00) [4]> и всякие экзотические варианты, например, когда TRUE это -1...
дельфя -
Memo1.Lines.Add(IntToStr(Integer(boolean(true))));
Memo1.Lines.Add(IntToStr(Integer(boolean(false))));
Memo1.Lines.Add(IntToStr(Integer(BOOL(true))));
Memo1.Lines.Add(IntToStr(Integer(BOOL(false))));
> как правильно отобразить Сишные TRUE и FALSE в Паскаль
не поверишь... пиши true и false будет однозначно.
Dimka Maslov (2016-02-15 18:44:00) [5]Бывают разные случаи.
1. FALSE это нуль, TRUE это не нуль (обычно это тип BOOL)
2. FALSE это нулевой первый бит, TRUE это единичный первый бит, в старших битах может быть что угодно (обычно это тип bool)
и всякие экзотические варианты, например, когда TRUE это -1...