StandardIO - Ausgeführtes Programm gibt im Hauptprogramm aus

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Badudel

Betreff: StandardIO - Ausgeführtes Programm gibt im Hauptprogramm aus

BeitragMo, Okt 24, 2011 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Welt,

ich rufe aus meinem Hauptprogramm ein Unterprogramm mit der system_-Funktion auf. Dieses Unterprogramm gibt mittels Print eine Zeile aus.
Nun wird automatisch in meinem Hauptprogramm diese Zeile ausgegeben. Ich möchte allerdings diese Zeile weiterverwenden und nicht nur ausgeben.
Ich habe schon versucht den StandardIOStream mit einem eigenen Stream zu besetzen, sowie die Print-Methode im Hauptprogramm überschrieben - geht beides nicht.

Das einfachste wäre natürlich, das Unterprogramm zu ändern, aber ich möchte als Unterprogramm eine Terminalanwendung benutzen.

Weiß wer Rat?

Viele Grüße,
Badudel
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

ZEVS

BeitragMo, Okt 24, 2011 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ein bisschen schwierig, ich bin daran auch schon gescheitert. Prinzipiell kannst du statt
Code: [AUSKLAPPEN]
unterprogramm
Code: [AUSKLAPPEN]
unterprogramm > tmp.txt
ausführen und aus der txt die Ausgabe auslesen. Alternativ kannst du eine C/C++-Anbindung machen, damit geht das bestimmt. Als Alternative zu Print gibt es drittens auch Names Pipes.

ZEVS

Badudel

BeitragMo, Okt 24, 2011 16:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Über eine txt-Datei wird es unschön, vor allem weil dann mein Input für das Terminalprogramm mehrzeilig wird und ich dann noch eine Datei mehr schreiben muss. Die Pipes kann ich auf Mac nicht nutzen, außerdem ist das Unterprogramm ja nicht von mir geschrieben.

Ich schau mal in C++-Foren, vielleicht finde ich da was.

Gruß!
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Thunder

BeitragMo, Okt 24, 2011 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir Mal das Modul pub.freeprocess an, das kann genau, was du brauchst. Du startest einen Prozess mit TProcess.Create und speicherst den rückgegebenen Handle (Typ TProcess). Dann kannst du über die Field-Variable pipe (Typ TPipeStream) und deren Methode ReadLine die Ausgabe des Programms auslesen. Wenn ich mich richtig erinnere kannst du sogar zurückschreiben.
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

Badudel

BeitragMo, Okt 24, 2011 19:29
Antworten mit Zitat
Benutzer-Profile anzeigen
EDIT:

Nach weiterem Suchen habe ich es hier gefunden.
https://www.blitzforum.de/foru...ateprocess

Suchen bildet.

Danke für eure Hilfe!
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik!

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group