Hallo
wenn ich mit
WriteLn('Test');
einen Text ausgebe. Bekomme ich in einer
{$APPTYPE GUI}
Anwendung einen Fehler (EA Fehler 105).
Das ist auch soweit verständlich. Es gibt ja keine Console zugewiesen ist zu der WriteLn schreiben könnte.
Ich weise also mit
AllocConsole
eine Konsole zu und kann nun mit WriteLn in diese Console schreiben.
Wenn ich nun mit
FreeConsole;
die Konsole von der Anwendung trenne, kann ich natürlich nicht mehr mit WriteLn arbeiten -> Fehler (EA-Fehler 6)
Meine Frage: "
Wie erkenne ich ob gerade eine Konsole zugewiesen ist?"
Mein Lösungsansatz war:
Delphi-Quellcode:
...
function isAllocConsole: Boolean;
begin
Result := False;
try
{$I-}
Write(#0#8);
// Write(''); funktioniert nicht, da nix ausgegeben wird :-(
{$I+}
Result := (IOResult = 0);
except
end;
end;
...
if isAllocConsole
then WriteLn('
DP RuLeZ');
...
Aber mit #0 wird trotzdem ein Leerzeichen auf den Bildschirm ausgegeben. Das dann mit DEL (#8) wieder gelöscht wird.
Das ist aber keine gute Lösung, da bei z.B. einer Ausgabeumleitung in eine Datei viele #0#8 enthalten wären
Weiß jemand eine bessere Lösung?