AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Consolenausgaben LIVE abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

Consolenausgaben LIVE abfangen

Ein Thema von DelTurbo · begonnen am 20. Aug 2015 · letzter Beitrag vom 21. Aug 2015
Antwort Antwort
Seite 3 von 3     123   
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#21

AW: Consolenausgaben LIVE abfangen

  Alt 21. Aug 2015, 09:29
Hallo..

Es liegt tatsächlich an der Console mit Pipes.
Wenn deine Konsolenanwendung ein WriteLN macht, dann wird dieses erstmal von StdOut gepuffert und dann komplett an die Pipe geFlusht..

Würde in deiner Konsolenanwendung nach jedem
WriteLN('.');
ein
Flush(Output);
gemacht werden, dann wird die Ausgabe direkt in die Pipe geschrieben und könnte einzeln mit ReadFile gelesen werden.

Habe hier mal dein Testprogramm nachgebaut, mal 0-20 ohne Flush, mal 0-20 mit Flush..
Und siehe da, die ersten 20 kamen erst zusammen, die weiteren 20 schön einzeln.

http://www.delphibasics.co.uk/RTL.asp?Name=Flush

Hier wirds (mit einem File) beschrieben, aber eine Pipe ist für MS ja auch nur ein File.

Geändert von HolgerX (21. Aug 2015 um 09:32 Uhr)
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#22

AW: Consolenausgaben LIVE abfangen

  Alt 21. Aug 2015, 09:44
Hi,
danke für die Antwort. Leider ist das Berechnungs Programm nicht von mir und es sind keine Quellen vorhanden. In meine Demo könnte ich das einbauen.

Letzte vielleicht sogar dumme frage: Es ist wohl nicht möglich dem Programm ein Flush "unterzujubeln"? Das ich während dem warten alle 300ms ein Flush dahin schicke?

Wenn nicht, naja heute Nacht habe ich mich schon eigentlich damit abgefunden das es nicht geht. Ich werde eine Sanduhr anzeigen
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#23

AW: Consolenausgaben LIVE abfangen

  Alt 21. Aug 2015, 10:18
Hab mal gegooglt..

Leider gibt es keine Möglichkeiten dieses Flush extern anzustoßen.
Dieses Puffern wird direkt durch die libc oder Phyton gehandelt und somit auch in Windows.

Wenn die Anwendung nicht mit deaktiviertem Buffer für stdout erstellt wurde (oder Flush()) dann wird immer gepuffert..

Selbst der Kernel von Windows puffert...

Den einzigen Workarround den ich gefunden habe, ist eine simulierte TTY-Schnittstelle stat Pipe zu verwenden.
Aber wie das geht.. K.A.
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#24

AW: Consolenausgaben LIVE abfangen

  Alt 21. Aug 2015, 10:26
Schade, war so eine Idee. Trotzdem vielen dank. Dann kommt nun die Sanduhr
Alle meine Rechtschreibfehler sind Urheberrechtlich geschützt!!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#25

AW: Consolenausgaben LIVE abfangen

  Alt 21. Aug 2015, 11:46
Hallo,

wenn Du Dir die sbPipes anschaust, wirst Du feststellen, dass es dort ein Ereignis onNotify gibt, gib' dort doch mal in das Memo jeweils die Uhrzeit aus...
Delphi-Quellcode:
  Caption := Format('%s - Bytes Read: %d - Exit-Code: %d',[sMessage,BytesRead,ExitCode]);
  meOutput.Lines.Add(Format('%s - %s',[FormatDateTime('hh:mm:ss.zzz',now),sOutput]);
und Du wirst feststellen, dass Du mit Meldungen zugeschüttest wirst. Wenn's denn um 'nen Punkt geht, dann schreib ihn hier doch selber
Du bekommst permanent Meldungen, dass Dein Prozess noch läuft, für die Fortschrittsanzeige kannst Du doch selbst sorgen. Wären da jetzt auf der Konsole wichtige Ausgaben zu erwarten, ok wäre ein Problem, aber nur um deren Fortschrittspunkte zu sehen, da ist der Aufwand übertrieben. Punkte in ein Label malen kannst Du selbst, da brauchst Du keine Vorlage von der Konsole
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 10:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz