Mit
{$APPTYPE CONSOLE}
wird die EXE im
PE-Header als Consolen-Anwendung markiert.
Windows stellt dann beim Programmstart eine Verbindung zur Console her (wenn aus einer Console oder einer anderen Consolen-Anwendung gestartet wurde) oder Windows erstellt eine Console, wenn noch Keine existiert.
Ohne
{$APPTYPE CONSOLE}
kommt durch Windows also keine "automatische" Console.
Dann kann man sich aber selber damit verbinden oder Eine erstellen.
AttachConsole bzw.
AllocConsole und mit
FreeConsole wieder weg.
https://www.delphipraxis.net/103940-...v2-0-15-a.html
Für windows ist das eine
GUI-Anwendung, aber wenn aus einer Console gestartet, verhält es sich wie eine Consolen-Anwendung.
* AttachConsole ... wenn das ging, dann ist schon eine Console verbunden (kann man also auch zum Prüfen verwenden, ob Console oder nicht)
* will man immer eine Console, dann AttachConsole und wenn nicht AllocConsole
* und will man nur
GUI, dann eben nichts machen
Auch wenn es eine Console-Anwendung ist, kann man dennoch eine
GUI anzeigen
und auch andersrum, kann eine
GUI-Anwendung ebenfalls eine Console einblenden.
ACHTUNG:
Wenn PeekMessage ein False sagt, dann darf TranslateMessage/DispatchMessage nicht gemacht werden.
Da dein WHILE keine Abbruchbedingung hat (warum nicht?), kannst auch Sleep und PeakMessage weglassen und GetMessage verwenden.
+
beim SetErrorMode?
Da werden Bits "kombiniert" und das macht man gefälligst mit OR.