Главная страница
    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.058 c
15-1216304096
Nous Mellon_
2008-07-17 18:14
2008.09.14
Вопрос по пхп. Снова


2-1217955652
Alex_C
2008-08-05 21:00
2008.09.14
Мелькание Hint при нажатой клавише Ctrl


15-1216620114
Vlad Oshin
2008-07-21 10:01
2008.09.14
Постоянно в памяти висит процесс WinWord.exe


11-1193314040
LazyBob
2007-10-25 16:07
2008.09.14
новые GRush


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