Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TDosCommand o.ä. für Firemonkey? (https://www.delphipraxis.net/211741-tdoscommand-o-ae-fuer-firemonkey.html)

softtouch 28. Okt 2022 10:51

TDosCommand o.ä. für Firemonkey?
 
Ich nutze oft mal TDosCommand, um Programme wie youtube-dl oder ffmepg.exe auszuführen und deren dos Ausgabe abzufangen und auszuwerten. Dabei nutze ich den Event onNewLine, der nach jeder Zeile der Ausgabe aufgerufen wird (zeilenweise ist wichtig für mein Programm). Nun suche ich genau sowas, aber für macOS/Firemonkey und hatte bisher kein Glück. Ist jemand sowas wie TDosCommand bekannt, welches auch unter macOS/FMX funktioniert? Wie gesagt, es ist wichtig, das ich jede einzelne Zeile erhalte wenn diese im Terminal ausgegeben wird.

jaenicke 28. Okt 2022 11:28

AW: TDosCommand o.ä. für Firemonkey?
 
Hilft dir das vielleicht?
Read And Interact With A Command Line Pipe In Delphi XE7 Firemonkey On Mac OSX

softtouch 28. Okt 2022 11:35

AW: TDosCommand o.ä. für Firemonkey?
 
Zitat:

Zitat von jaenicke (Beitrag 1514007)

Danke, aber es hilft nicht wirklich. Das ist fast wie mein aktueller Code, welcher die gesamte Ausgabe auf einmal bekommt, wenn der Task abgeschlossen ist. Was ich brauche ist aber Zeile für Zeile, wie eben TDosCommand es mit dem Event onNewLine macht. Leider habe ich absolut nichts dazu gefunden.

jaenicke 28. Okt 2022 15:42

AW: TDosCommand o.ä. für Firemonkey?
 
Zitat:

Zitat von softtouch (Beitrag 1514009)
Das ist fast wie mein aktueller Code, welcher die gesamte Ausgabe auf einmal bekommt, wenn der Task abgeschlossen ist.

Das sollte damit aber möglich sein. Die Pipes werden gefüllt, sobald das gestartete Programm etwas hinein schreibt.

himitsu 28. Okt 2022 17:21

AW: TDosCommand o.ä. für Firemonkey?
 
TDosCommand, TComPort und Andere, wie Dieses, lesen in Windows oft in einem Thread/Timer regelmäßig aus den Pipes
und kopieren es entweder in einen eigenen Puffer oder geben es direkt weiter.

In dem Verlinkten wird der Prozess gestartet und dann im Button (ab und an oder am Ende) die Pipes ausgelesen.



Eventuell muß man auch aufpassen ... darum oft in einem Thread, der immer weiterläuft ... dass eventuell der Speicher/Cache der Pipe voll läuft und Daten verloren gehen, wenn man nicht regelmäßig was abholt.
Über Events kann man, beim Lesen, die Pausen zwischen eintreffenden Daten resssourcenschonender gestalten.


Ich weiß nicht ob diese Pipes/Caches im Linux/MacOS/Android auch ein Limit haben, aber vermutlich schon,
also kann man es auch da im Prinzip genauso machen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17: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