AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Ausgabe an Konsole, von der GUI gestartet wurde

Ausgabe an Konsole, von der GUI gestartet wurde

Ein Thema von iphi · begonnen am 3. Apr 2018 · letzter Beitrag vom 3. Apr 2018
Antwort Antwort
Seite 1 von 2  1 2   
iphi

Registriert seit: 13. Feb 2009
246 Beiträge
 
Delphi 7 Personal
 
#1

Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:29
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:
...
  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);
...
Der writeln produziert einen Error 105. Weiß jemand Rat?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:37
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.149 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:38
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');
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.215 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:41
Wurde in der DP schon mal besprochen
Peter
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
246 Beiträge
 
Delphi 7 Personal
 
#5

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:45
Zitat:
{$APPTYPE CONSOLE}
Damit habe ich die Konsole immer am Bein. Das möchte ich nicht.
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie
(Moderator)

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:49
Wie ich schon sagte, wie in eien Datei schreiben:
Delphi-Quellcode:
procedure TConsole.WriteStr(s: string);
var
  iWritten: cardinal;
begin
  WriteFile(hOut, s[1], Length(s), iWritten, nil);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.952 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:53
Bei GUI-Anwendungen verbindet Delphi WriteLn/ReadLn nicht standardmäßig mit der "fremden" Console.

siehe mein Hier im Forum suchenFileSplitter

Das Ding ist als normale GUI-Anwendung geschrieben (also quasi {$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)

MSDN-Library durchsuchenGetStdHandle
MSDN-Library durchsuchenAllocConsole
MSDN-Library durchsuchenAttachConsole
...

PS: in der System-Unit gibt es
Delphi-Quellcode:
var
  Input: Text; { Standard input }
  Output: Text; { Standard output }
  ErrOutput: Text; { Standard error output }
Die kann man auch selber zuweisen, wenn Delphi das nicht automatisch macht.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 3. Apr 2018 um 09:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.149 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:57
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
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
246 Beiträge
 
Delphi 7 Personal
 
#9

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 09:58
Danke für die Tipps!
Mit AttachConsole gehts prima!
  Mit Zitat antworten Zitat
iphi

Registriert seit: 13. Feb 2009
246 Beiträge
 
Delphi 7 Personal
 
#10

AW: Ausgabe an Konsole, von der GUI gestartet wurde

  Alt 3. Apr 2018, 11:43
Hallo Himitsu,

Zitat:
siehe mein Hier im Forum FileSplitter
Wollte ich gerade studieren um noch was dazu zu lernen. Da gibt es allerdings offenbar viele Varianten.
Wo finde ich den relevanten Quellcode, auf den Du Dich beziehst?
Danke!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf