Jupp,
{$IFDEF DEBUG}
war in diesem Fall einfach falsch.
Ob eine Konsole
existiert verbunden ist, hängt ja nicht davon ab.
Bei
{$APPTYPE CONSOLE}
wird im
PE-Header vom
Compiler Linker ein Flag gesetzt, welches Windows veranlasst vom Start der Anwendung dafür zu sorgen und sie zu verbinden.
GetConsoleWindow solltest du besser vergessen, denn das gilt eigentlich nur für die alte CMD, aber nicht für das neue Terminal (die neue/alte Consolen-Streaming-
API)
Stattdessen einfach erst
AttachConsole versuchen und wenn das nicht geht, dann
AllocConsole.
Nicht zwangsweise immer eine neue Console, sondern, wenn aus einer Konsole gestartet wurde, dann damit verbinden.
Ein Therapeut entspricht 1024 Gigapeut.