Дож писал(а):По ссылкам нет микросовтовских проблем. Был баг в FPC RTL (поведение двух функций не соответствовало документации), который исправили 6 лет назад.
Сквозняк, в этой теме вас уже много раз поймали на вранье. Все проблемы не в винде, а в вашем подходе -- вы не умеете читать документации, поэтому заслуженно страдаете.
А вот врать не надо. В виндовой версии фпц тянут совместимость с кодом ориентированным на древние баги. Это ваше "исправление" - чистой воды фикция и цирк с конями. Нужно много тестировать чтобы после этого исправления построить в винде работоспособный код.
Конечно, запрограммировали такую штуку
Код: Выделить всё
const feInvalidHandle: THandle = THandle(- 1);
А как эту -1 получать, если функция возвращает то 4294967295, то 18446744073709551615 ? Получить -1 можно если устроить переполнение переменной при присваивании ею значения, что не при всех опциях компиляции возможно. И вы предлагаете всю программу собирать с опциями позволяющими такое безобразие? Тем более, что в вин64 переполнять надо переменную типа int64, а в вин32 - longint. То есть испорти отладку глюков в программе и всё равно получи цирк с конями. Уж лучше так в коде константу писать:
Код: Выделить всё
CONST
{$IFDEF WIN32}
VINDOFAILOBAG=4294967295;
{$ENDIF WIN32}
{$IFDEF WIN64}
VINDOFAILOBAG=18446744073709551615;
{$ENDIF WIN64}
{$IFDEF LINUX}
VINDOFAILOBAG=-1;
{$ENDIF LINUX}
Если код будет компилиться под другую платформу, то компилятор сразу просигнализирует: слышь, начальника, в твоём коде совсем нету описания виндофайлобага, моя дальше работать отказывается, пошёл чай пить.
Добавлено спустя 4 часа 24 минуты 54 секунды:Можно и так писать:
Код: Выделить всё
uses
JwaWinCon, Windows;
begin
ShowWindow(GetConsoleWindow, SW_SHOWMINIMIZED);
end.
Констант много, какая из них лучше всех впишется в решение, ещё не протестировал.
Код: Выделить всё
// ShowWindow() Commands
//
SW_HIDE = 0;
{$EXTERNALSYM SW_HIDE}
SW_SHOWNORMAL = 1;
{$EXTERNALSYM SW_SHOWNORMAL}
SW_NORMAL = 1;
{$EXTERNALSYM SW_NORMAL}
SW_SHOWMINIMIZED = 2;
{$EXTERNALSYM SW_SHOWMINIMIZED}
SW_SHOWMAXIMIZED = 3;
{$EXTERNALSYM SW_SHOWMAXIMIZED}
SW_MAXIMIZE = 3;
{$EXTERNALSYM SW_MAXIMIZE}
SW_SHOWNOACTIVATE = 4;
{$EXTERNALSYM SW_SHOWNOACTIVATE}
SW_SHOW = 5;
{$EXTERNALSYM SW_SHOW}
SW_MINIMIZE = 6;
{$EXTERNALSYM SW_MINIMIZE}
SW_SHOWMINNOACTIVE = 7;
{$EXTERNALSYM SW_SHOWMINNOACTIVE}
SW_SHOWNA = 8;
{$EXTERNALSYM SW_SHOWNA}
SW_RESTORE = 9;
{$EXTERNALSYM SW_RESTORE}
SW_SHOWDEFAULT = 10;
{$EXTERNALSYM SW_SHOWDEFAULT}
SW_FORCEMINIMIZE = 11;
{$EXTERNALSYM SW_FORCEMINIMIZE}
SW_MAX = 11;
{$EXTERNALSYM SW_MAX}