Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Pipes in Turbo Pascal (https://www.delphipraxis.net/37256-pipes-turbo-pascal.html)

scp 3. Jan 2005 13:39


Pipes in Turbo Pascal
 
Wie leite ich möglichst sauber die Ausgabe eines externen Programms in eine Textdatei um?
Ich habe bisher her schon das "umbiegen" von INT 29h in Kombination mit Assign(OUTPUT, ) versucht, damit kann man anscheinend aber nur die Bildschirmausgabe eingrenzen/beeinflussen.
Wenn ich den Kommandointerpreter (COMMAND.COM) direkt per INT 2Eh anspreche, kann ich zwar ">" wieder verwenden, binde ich meine EXE dann in eine .BAT-Datei ein, tauchen auch hier Probeme auf.

Beides ist eben auch unsauber, weil es über die Interrupts läuft.

Dax 3. Jan 2005 13:42

Re: Pipes in Turbo Pascal
 
Turbo Pascal ist für DOS konzipiert, und Pipes wurden erst mit Windows eingeführt. Falls deine Programme nicht unbedingt unter DOS laufen müssen, erstelle dir doch mit Delphi eine Konsolenapp. Da du es dann mit Delphi(nicht DOS) machst, kannst du auch Pipes verwenden.

Snoop007 3. Jan 2005 13:59

Re: Pipes in Turbo Pascal
 
anstatt einer ( named ) pipe nimm doch eine datei, ist schliesslich nichts anderes - im grundprinzip -

sakura 3. Jan 2005 14:26

Re: Pipes in Turbo Pascal
 
Zitat:

Zitat von Dax
Turbo Pascal ist für DOS konzipiert, und Pipes wurden erst mit Windows eingeführt.

Die die ihr meint schon, aber er spricht von den alten UNIX/DOS Pipes :zwinker:

Leider kann ich auch nicht zur Lösung beisteuern, aber immerhin gibt es noch andere die das kennen :mrgreen:

...:cat:...

P.S.: Unter DOS dienten Pipes zur Umleitung der Ausgabe von Kommandozeilentools.

Hansa 3. Jan 2005 15:05

Re: Pipes in Turbo Pascal
 
Zitat:

Zitat von scp
...Ich habe bisher her schon das "umbiegen" von INT 29h in Kombination mit Assign(OUTPUT, ) versucht, damit kann man anscheinend aber nur die Bildschirmausgabe eingrenzen/beeinflussen.
Wenn ich den Kommandointerpreter (COMMAND.COM) direkt per INT 2Eh anspreche, kann ich zwar ">" wieder verwenden, binde ich meine EXE dann in eine .BAT-Datei ein, tauchen auch hier Probeme auf.

Was veranstaltest du denn da mit den Interrupts ? :shock: Das > ist eben genau für die Bildschirmausgaben gedacht, damit man die auch in eine Datei/Drucker usw. umleiten kann. Das ganze funktioniert nur mit Standard-I/O also writeln, readln usw. Schreibe ich z.B.
Code:
DIR *.pas >prn
, so wird es gedruckt.

Allerdings verstehe ich nicht, was du mit "externem Programm" meinst. Etwa ein fremdes, ohne Source ? Dann siehts eher echt schlecht aus. :mrgreen:

scp 3. Jan 2005 16:25

Re: Pipes in Turbo Pascal
 
Mit externem Programm meine ich etwas, was man normalerweise per Exec() ausführt, eben "dir *.* >test.txt" oder in meinem Fall konkret "extract.exe /D /A BASE4.CAB>base4.lst".
Das mit den Interrupts ist nur uralter Code, den ich bei mir gefunden habe, ich frage ja deshalb, weils eben nich besonders gut ist.

Das > funktioniert eben bei Exec() nicht, zumindest bei mir nicht.


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