Kann Stdout-Ausgabe von GUI-Anwendung nicht lesen

Antworten
MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Kann Stdout-Ausgabe von GUI-Anwendung nicht lesen

Beitrag von MitjaStachowiak »

Hallo,
ich weiß mal wieder nicht weiter. Also ich starte mit TProcess ein Programm und lese die Ausgabe von StdOut und ggf. StdErr. Wenn ich ein einfaches Konsolenprogramm starte, welches ebenfalls mit Lazarus geschrieben wurde, bekomme ich die Ausgaben, die ich per writeln im Code mache.

Wenn ich aber ein writeln in einer Anwendung mit GUI verwende, bekomme ich diese Ausgaben nicht mehr. Selbst dann nicht, wenn ich vor den Application-Aufrufen in der LPR-Datei etwas printe. Was ich bekomme sind zwei Warnungen in StdErr:

Code: Alles auswählen

Gtk-WARNING **: 21:41:26.844: Unable to locate theme engine in module_path: "adwaita",


Starte ich das GUI-Programm im Terminal, werden mir sowohl diese Warnungen, als auch meine writelns angezeigt. Wenn ich eine eigene Unit vor der Interfaces-Unit einbinde und in der initialization ein writeln mache, wird mir dessen Ausgabe im Terminal sogar vor den Warnungen angezeigt, aber über die Pipe von TProcess bekomme ich weiterhin nur die Warnungen.

Habe natürlich auch writeln(stderr, 'test'); versucht. Daran liegt es nicht. Ebenfalls nicht an der -WG-Option (Win32 GUI Anwendung) in den Projekteinstellungen.

Ich habe das Gefühl, dass in GUI-Anwendungen mehrere Pipes geöffnet werden, das Terminal (sowie auch das Konsolenfenster von Lazarus) irgendwie alle mitschneidet und ausgibt, während TProcess nur das StdOut bekommt...

Jemand 'ne Idee, woran das liegen kann?

MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Kann Stdout-Ausgabe von GUI-Anwendung nicht lesen

Beitrag von MitjaStachowiak »

Nachtrag: Wie ich gerade feststelle, purzeln die übrigen Writes aus der Pipe, nachdem ich die Form schließe. Also auch Message in der Init-Section, die mir das Terminal vor den Warnungen ausgibt, wird in TProcess zurück gehalten, bis das Fenster geschlossen wurde. Die Warnungen kommen aber schon vorher. :shock:


MitjaStachowiak
Lazarusforum e. V.
Beiträge: 394
Registriert: Sa 15. Mai 2010, 13:46
CPU-Target: 64 bit
Kontaktdaten:

Re: Kann Stdout-Ausgabe von GUI-Anwendung nicht lesen

Beitrag von MitjaStachowiak »

Nein, ein Flush(stdout) nach writeln hilft leider auch nicht. Ich fürchte, ich werde eine eigene Pipe erstellen müssen. Mangels Anhaltspunkt, woran es liegen könnte...

Antworten