Форум: "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.47 MB
Время: 0.081 c