![]() |
TProcess Output unvollständig
Hallo allerseits!
Ich möchte mit einem TProcess (Lazarus) die Ausgabe aus einem Konsolenfenster auslesen. Das funktioniert auch, aber irgendwie kommt nicht immer alles an. Ich Starte das auslesen mit einem Timer alle 100ms. Ich speichere den Kram aus dem OutputStream in einer TStringList. Ich habe allerdings destgestellt, dass wenn ich das auslesende programm wild minimiere, maximiere und hineinklicke, kommt oft auch der Rest. Könnte es vielleicht am Focus des Programms liegen? Während der andere Prozess läuft, ist es Wie eingefroren. Wäre schön, wenn da jemand etwas weiß. EDIT: Ich weiß, dass es daran liegt, dass der Prozess ein neues Fenster öffnet. So werden anscheinen die Infos aus dem Fenster und nicht aus der Konsole gelesen. |
AW: TProcess Output unvollständig
Ich weiß jetzt nich, ob ich aus deiner Erläuterung schlau werde, aber bezüglich TProcess folgende Erklärung:
Die Pipes, welche für StdOut, StdIn und StdErr verwendet werden haben eine beschränkte Puffergröße. Das heißt, wenn du einen Prozess mit der Option poUsePipes startest, dann musst du aus OutputStream und ErrorStream auslesen, da sonst der gestartete Prozess nicht mehr reinschreiben kann, wenn der Puffer voll ist. Ist der Puffer voll, dann bleibt der Prozess hängen und wartet bis wieder Platz ist (dieser Teil wird vom Betriebssystem übernommen). In wie weit das auf deine Situation zutrifft kann ich gerade nicht beurteilen. Gruß, Sven |
AW: TProcess Output unvollständig
Mein Problem ist einfach, dass Ich den Output eines Programmes nicht richtig lesen kann.
Ich habe festgestellt, dass es funktioniert, wenn ich mir von dem Programm nur die hilfe anzeigen lasse, also kein fenster geöffnet Wird. Sobalst es Aber ein Fenster öffnet, kann ich die zugehörige konsole nicht mehr richtig auslesen. Das auszuführende programm bleibt auch nicht hängen (eher mein eigenes, aber poWaitOnExit ist draußen!). |
AW: TProcess Output unvollständig
ich verwende kein Lazarus, auf dieser Seite
![]() wird IMHO eine Lösung für Dein Problem beschrieben.... |
AW: TProcess Output unvollständig
Diese Seite kenne ich schon. Ich habe aber festgestellt, nachdem die konsole vollgelaufen ist, geht es!
Ich habe die vermutung, dass das programm das prüft und dann einen flush macht. Weiß jemand, wie man ein vollleufen der Pipe künstlich hervorrufen kann? |
AW: TProcess Output unvollständig
Gib mal ein bissl Beispielcode was du da so machst,so wird doch kein Mensch schlau draus.
|
AW: TProcess Output unvollständig
ich benutze den selben code wie hier:
![]() Und er funktionirt auch wie er soll, zumnindest für normale Anwendungen. Sobald der Auszulesende prozess aber ein neues fenster öffnet is ende im gelände. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:42 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 by Thomas Breitkreuz