Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Ausgabe eines DOS-Programmes empfangen (https://www.delphipraxis.net/1220-ausgabe-eines-dos-programmes-empfangen.html)

rebugger 2. Nov 2002 09:40


Ausgabe eines DOS-Programmes empfangen
 
Hallo,
ich möchte mit Delphi HTML-Code an ein DOS-Programm schicken !
Dieses verarbeitet es und gibt den neuen Code aus (Das DOS-Programm existiert bereits).

Diese Ausgabe des neuen Codes möchte ich wiederum mit meinem Programm abfangen und in eine Datei abspeichern.

Wie mach ich das ? Hat jemand ein Tut oder ein paar Befehle für mich ?

Daniel B 2. Nov 2002 09:44

Hmm,

wenn das DOS-Programm auch von Dir ist und du noch was dran basteln kannst, dann könntest Du das Programm mit Parametern öffnen, nachdem es die Daten verarbeitet hat, könnte das DOS, wieder die WIN-Version mit Parametern übergeben. Damit könntest Du die Daten recht einfach hin und her schicken. Ich weiss jetzt allerdings nicht, wie lange die Parameter sein dürfen. Aber Du könntest ja auch nur einen Pfad zur Datei angeben, ohne die Daten an sich zu übergeben. Das wäre am einfachsten.

rebugger 2. Nov 2002 09:47

Leider ist es nicht von mir, und nachprogrammieren wäre zu schwer.
Die eingabe sieht in etwa so aus:
Code:
datei.exe <html>...</html>
und dann gibt das programm unmittelbar danach die ausgabe zurück !

Daniel B 2. Nov 2002 09:49

Zitat:

Zitat von rebugger
und nachprogrammieren wäre zu schwer.

So, so... :mrgreen: Was macht denn dieses Programm genau, wenn man fragen darf?

rebugger 2. Nov 2002 09:51

naja, ok...
ich habe das ganze vereinfacht.
ich arbeite in letzter zeit viel mit php !
Die DOS-Datei ist der Parser php.exe
Mein Programm liest eine .php-Datei aus, übergibt diese an die php.exe, empfängt den entstandenen HTML-Code, speichert ihn und zeigt ihn an !
(also praktisch als Server-Software für CDs [also ohne installation])

Daniel B 2. Nov 2002 09:58

Hmm, ich frage mich gerade wie lang die Parameter sein dürfen, die man bei einem Programm übergibt. Der HTML-Code kann ganz schnell mal 3-400Zeilen haben, dann noch der ganze Text, ob man wirklich soo viel Daten übergeben kann?!?

rebugger 2. Nov 2002 10:01

Hm, ich weiß auch nicht...
Wie macht das der Apache-Server ?

Chewie 2. Nov 2002 10:09

Also die Ausgabe einer Konsolenanwendung in eine Textdatei umleiten, geht ganz leicht. Du musst nur die Datei folgendermaßen starten:
Code:
start.exe -parameter1 -parameter2 > ausgabe.txt
So wird die Ausgabe in die ausgabe.txt gespeichert.

Wie ein Webserver die PHP.exe aufruft, weiß ich auch nicht, aber ich in mir recht sicher, dass er das nicht über die Parameterliste macht. Vielleicht über Named Pipes, aber vielleicht findest du irgendwo wie es z. B. der Apache macht.

Daniel B 2. Nov 2002 10:21

Nun, ich würde sagen das der Apache, die Datei erzeugt, bzw. er schreibt die Daten in eine Temporäre Datei, diese Datei wird dann einfach nur auf dem Server abgelegt. Bei Zugriff landet sie im Cache des Browsers und der zeigt dann alles an. Irgendwie so ähnlich. :cat:

rebugger 2. Nov 2002 10:25

OK, hab ein bißchen was zusammengebastelt:
Code:
Uses ShellAPI;

procedure TMain.FormCreate(Sender: TObject);
var
  PHPstring: TStringlist;
  PHPoutput: String;
begin
  PHPpath := 'php.exe';
  PHPfile := 'index.php';

  PHPstring.LoadFromFile(PHPfile);
  PHPoutput := '>c:\ausgabe.htm';
  PHPstring.Text := StringReplace(PHPstring.Text, #13#10, '', [rfReplaceAll]);

  ShellExecute(0, nil, PHPpath + ' ' + PHPstring[0] + ' ' + PHPoutput, nil, nil, SW_SHOW);

  WebBrowser.Navigate('c:\ausgabe.htm');
end;
Nur leider sagt er bei ShellExecute:
[Fehler] main_unit.pas(89): Inkompatible Typen: 'String' und 'PChar'


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 Uhr.
Seite 1 von 2  1 2      

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