![]() |
Ausgabe an Konsole, von der GUI gestartet wurde
Hallo,
ich möchte mein GUI Programm auch als Konsolenanwendung laufen lassen können, falls es aus einer Konsole gestartet wird. Letzteres kann ich mit GetStdHandle abfragen. Wie aber kann ich dann an diese Konsole Text ausgeben? So gehts jedenfalls nicht:
Delphi-Quellcode:
Der writeln produziert einen Error 105. Weiß jemand Rat?
...
if GetStdHandle(Std_Output_Handle)<>0 then begin Windows.MessageBox(0, 'Is Console', nil, MB_OK); writeln('Hello World'); end else Windows.MessageBox(0, 'NO Console', nil, MB_OK); ... |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Meines Wissens nach kann man die Konsole wie in eine Datei schreiben. Also irgendwie so ähnlich. Ich habe es noch nie gemacht von einer Konsolenanwendung.
|
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Delphi-Quellcode:
{$APPTYPE CONSOLE}
hStdOut := GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN or FOREGROUND_BLUE or FOREGROUND_RED or FOREGROUND_INTENSITY); WriteLn('Weißer Text'); |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
|
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Zitat:
Falls das Programm aus einem Konsolenfenster heraus gestartet wird, möchte ich Text in genau das Konsolenfenster ausgeben. Ohne {$APPTYPE CONSOLE} liefert der Vorschlag trotz vorhandener Konsole einen Error 105. |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Zitat:
Delphi-Quellcode:
procedure TConsole.WriteStr(s: string);
var iWritten: cardinal; begin WriteFile(hOut, s[1], Length(s), iWritten, nil); end; |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Bei GUI-Anwendungen verbindet Delphi WriteLn/ReadLn nicht standardmäßig mit der "fremden" Console.
siehe mein ![]() Das Ding ist als normale GUI-Anwendung geschrieben (also quasi
Delphi-Quellcode:
),
{$APPTYPE GUI}
aber da wird erkannt, ob es in einer Konsole läuft. Ebenso ist es möglich sich eine eigene Console zu erstellen. (neue Konsole, neben der von wo gestartet wurde oder eine Konsole für GUI-Anwendung, wenn nicht von da gestartet wurde) ![]() ![]() ![]() ... PS: in der System-Unit gibt es
Delphi-Quellcode:
Die kann man auch selber zuweisen, wenn Delphi das nicht automatisch macht.
var
Input: Text; { Standard input } Output: Text; { Standard output } ErrOutput: Text; { Standard error output } |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Delphi-Quellcode:
{$APPTYPE CONSOLE}
hStdOut := GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(hStdOut, FOREGROUND_GREEN or FOREGROUND_BLUE or FOREGROUND_RED or FOREGROUND_INTENSITY); WriteLn('Weißer Text'); FreeConsole; // das sollte Console zumachen |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Danke für die Tipps!
Mit AttachConsole gehts prima! |
AW: Ausgabe an Konsole, von der GUI gestartet wurde
Hallo Himitsu,
Zitat:
Wo finde ich den relevanten Quellcode, auf den Du Dich beziehst? Danke! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz