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

Вниз

CreateFiber   Найти похожие ветки 

 
Belorus   (2007-12-02 21:22) [0]

ПО МСДН результат - указатель на адресное пространство, по объявлению LongBool ....

Как же так ?


 
Однокамушкин   (2007-12-02 21:46) [1]

Ну, ошиблись те, кто делал модуль Windows.dcu, с кем не бывает... Импортируйте функцию самостоятельно с нужным типом или просто приводите явно LongBool к Pointer: 4 байта - они и в Африке 4 байта


 
EgorovAlex   (2007-12-02 22:05) [2]

Если бы это был один баг объявлений :(


 
guav ©   (2007-12-02 22:58) [3]

Ну правда скорее всего в MSDN
Исходя из этого
If the function succeeds, the return value is the address of the fiber.
If the function fails, the return value is NULL.

интерпретировать как LongBool тоже можно, особенно если сам адрес практического значения не имеет.


 
Leonid Troyanovsky ©   (2007-12-03 09:06) [4]


> Belorus   (02.12.07 21:22)  

> Как же так ?

Двоечники работали.
See also ConvertThreadToFiber.

В TD поправили.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2007-12-03 09:53) [5]

> Leonid Troyanovsky  (03.12.2007 09:06:04)  [4]

Не совсем, это просто обычно СИ раздвоение личности, результат одновременно является и логическим и указателем. Это обычно явление в Win API
Поэтому возможны два объявления, выбрали LongBool, потом передумали.


 
Leonid Troyanovsky ©   (2007-12-03 10:08) [6]


> Anatoly Podgoretsky ©   (03.12.07 09:53) [5]

> Поэтому возможны два объявления, выбрали LongBool, потом
> передумали.

Возвращаемый результат должен использоваться, например,
в SwithToFiber. А выглядит это в случае BOOL совсем дико,
это даже не GetMessage :)

Поэтому это, IMHO, элементарное разгильдяйство, которое
долго жило из-за не особой востребованности фиберов дельферами.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-12-03 10:28) [7]


> Leonid Troyanovsky ©   (03.12.07 09:06) [4]

> See also ConvertThreadToFiber.

> В TD поправили.

Поправили только CreateFiber :)

--
Regards, LVT.


 
Belorus   (2007-12-03 17:11) [8]

Спасибо.

Смешная ситуация, честно говоря.


 
Anatoly Podgoretsky ©   (2007-12-03 19:03) [9]

> Leonid Troyanovsky  (03.12.2007 10:08:06)  [6]

В Си не смешно if (p=func) видишь логическое сравнение, а дальше p используем как указатель.


 
Leonid Troyanovsky ©   (2007-12-03 21:46) [10]


> Anatoly Podgoretsky ©   (03.12.07 19:03) [9]

Конечно, Си оставляет много просторов для разных недоразумений, но,
самое смешное, что борланды, вроде бы, поправились в CreateFiber,
однако, так и не смогли довести дело до конца - from TD2006:

function ConvertThreadToFiber(lpParameter: Pointer): BOOL; stdcall;

Это против LPVOID from msdn:
Return Values
If the function succeeds, the return value is the address of the fiber.

Честно говоря, объяснений такому завидному упорству я найти не смог ;)

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2007-12-03 21:52) [11]

> Leonid Troyanovsky  (03.12.2007 21:46:10)  [10]

Да хрен их знает, может из-за этого "If the function fails, the return value is NULL. "
Сишникам то проще из-за отсутствия жесткой типизации, как хотят так и воротят (любую переменную могут использовать как Bool или еще как), а тут ломай себе голову, как быть - объявишь Bool можешь писать if func и приводить к указателю, объявишь указатель то приводить к Bool или сравнивать с nil
Я бы конечно объявил указателем, все таки все равно присваивать нужно в большинстве случаев перед использованием.


 
Leonid Troyanovsky ©   (2007-12-03 21:56) [12]


> guav ©   (02.12.07 22:58) [3]

> интерпретировать как LongBool тоже можно, особенно если
> сам адрес практического значения не имеет.

Ключевым для волокон является, как раз, адрес для SwitchToFiber,
без которого, как, собс-но, и ConvertThreadToFiber, никак не обойтись.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2007-12-03 22:14) [13]


> Anatoly Podgoretsky ©   (03.12.07 21:52) [11]

> Я бы конечно объявил указателем

У борландов из DWORD были проблемы, а уж с BOOL - и подавно,
когда, вдруг, MS решил, что в военное время TRUE м.б. равен 1.
Т.е., борланды плачут, но, все равно, наступают на грабли.
Уж приводили, хотя бы, к Longint  - не так дико выглядит.

--
Regards, LVT.


 
Anatoly Podgoretsky ©   (2007-12-03 22:21) [14]

> Leonid Troyanovsky  (03.12.2007 22:14:13)  [13]

Не напоминай мне про dWord я до сих пор злой и про Cardinal тоже не надо.


 
Германн ©   (2007-12-03 22:31) [15]


> Anatoly Podgoretsky ©   (03.12.07 22:21) [14]

Так вот почему в анамнезе появилась язва.



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

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

Наверх




Память: 0.48 MB
Время: 0.048 c
15-1216094479
123-ий
2008-07-15 08:01
2008.09.14
Шлюз Интернета


2-1217517743
altatr
2008-07-31 19:22
2008.09.14
Использование процедур


15-1216701537
Sergey13
2008-07-22 08:38
2008.09.14
СУБД Ред База Данных. Никто не пробовал? Как впечатления?


11-1190893585
Алекс ей Долгов
2007-09-27 15:46
2008.09.14
Печать отчета по базе данных из KOL&MCK


15-1216815562
oldman
2008-07-23 16:19
2008.09.14
А у меня завтра дочери исполняется шесть лет!





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский