Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2018.02.04;
Скачать: [xml.tar.bz2];

Вниз

Как корректно сравнить/присвоить Longint с Сишными TRUE и FALSE?   Найти похожие ветки 

 
Незарегистрированный   (2016-02-15 17:46) [0]

У меня довольно глупый вопрос по 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 в Паскаль?


 
Dimka Maslov ©   (2016-02-15 18:44) [1]

Бывают разные случаи.

1. FALSE это нуль, TRUE это не нуль (обычно это тип BOOL)
2. FALSE это нулевой первый бит, TRUE это единичный первый бит, в старших битах может быть что угодно (обычно это тип bool)

и всякие экзотические варианты, например, когда TRUE это -1...


 
sniknik ©   (2016-02-15 18:54) [2]

> и всякие экзотические варианты, например, когда 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 будет однозначно.


 
Незарегистрированный   (2016-02-15 19:09) [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 21:23) [4]

> Или вы так предлагаете?:
> if wParam=Integer(BOOL(False)) then result:=Integer(BOOL(True));
просто
if wParam=Integer(False) then result:=Integer(True);

> Всё равно нет нужного поведения...
значения в коде выше смотрел?


 
Игорь Шевченко ©   (2016-02-15 21:41) [5]


> Делаю так:
>
> if wParam=0 then result:=1;


Правильно делаешь


> Поведение вообще не такое как должно быть.


значит ошибка в другом месте



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2018.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.012 c
1-1351687767
cobalt
2012-10-31 16:49
2018.02.04
Декларация и исполнение процедур/функций


2-1455547592
Незарегистрированный
2016-02-15 17:46
2018.02.04
Как корректно сравнить/присвоить Longint с Сишными TRUE и FALSE?


15-1469741401
Юрий
2016-07-29 00:30
2018.02.04
С днем рождения ! 29 июля 2016 пятница


1-1355759763
harisma
2012-12-17 19:56
2018.02.04
QuickReport: pageCount


2-1455133154
aturasama
2016-02-10 22:39
2018.02.04
сокеты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский