Delphi-PRAXiS
Seite 2 von 2     12   

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)

Daniel B 2. Nov 2002 10:31

Hallodriii,

Du solltest PHPOutput mittel PChar(PHPOutput) in einen Char ändern. Bei den anderen auch.

Servus. :hi:

rebugger 2. Nov 2002 10:37

jo, ok, habe nun:
Code:
  PHPString := TStringList.Create;
  PHPstring.LoadFromFile(PHPfile);
  PHPoutput := '>c:\ausgabe.htm';
  PHPstring.Text := StringReplace(PHPstring.Text, #13#10, '', [rfReplaceAll]);

  MessageDlg(PHPpath + ' ' + PHPstring[0] + ' ' + PHPoutput, mtInformation, [mbOK], 0);
  ShellExecute(0, 'open', PChar(PHPpath + ' ' + PHPstring[0] + ' ' + PHPoutput), nil, nil, SW_NORMAL);
Es gibt keine Fehlermeldung !
Der Browser versucht c:\ausgabe.htm anzuzeigen, nur leider wurde sie nicht angelegt !
Per MessageDlg() habe ich mir zur Sicherheit den Text ausgeben lassen:
Code:
php.exe <?php phpinfo(); ?> >ausgabe.htm

Daniel B 2. Nov 2002 10:45

Du solltest die Datei selbst mit
Code:
FileCreate('C:\Windows\Desktop\text.txt');
anlegen.
Und dann nur noch zum Schreiben öffnen.

Christian Seehase 2. Nov 2002 11:47

Moin Rebugger,

ich hab' Deine letzten Codeschnipsel mal ein wenig überarbeitet:

Code:
[b]var[/b]
  PHPString : [b]string[/b];
  fsIN     : TFileStream;

[b]begin[/b]
  fsIN := TFileStream.Create(PHPFile,fmOpenRead);
  [b]try[/b]
    PHPString := StringOfChar(#00,fsIN.Size);
    fsIN.Read(PHPString[1],fsIN.Size);
    PHPoutput := '>c:\ausgabe.htm';
    PHPstring := StringReplace(PHPstring, #13#10, '', [rfReplaceAll]);
    MessageDlg(PHPpath + ' ' + PHPstring + ' ' + PHPoutput, mtInformation, [mbOK], 0);
    ShellExecute(0, 'open', PChar(PHPpath + ' ' + PHPstring + ' ' + PHPoutput), [b]nil[/b], [b]nil[/b], SW_NORMAL);
  [b]finally[/b]
    FreeAndNil(fsIN);
  [b]end[/b];
[b]end[/b];
Da Du offensichtlich nicht die einzelnen Zeilen brauchst (immerhin löscht Du ja alle Zeilenvorschübe), dürfte diese Variante etwas resourcensparender sein.
Bist Du sicher, dass es funktioniert, wenn Du alle Zeilenvorschübe löscht?

d3g 2. Nov 2002 11:49

Hi rebugger,

der Trick mit "> ausgabe.htm" funktioniert leider bei Win32-Konsolenanwendungen teilweise nicht mehr. ICh habe mal ein OpenSource-Prog geschrieben, das (auf der GBasis von einem Code von NicoDE) Konsolenoutputs abfängt, schau's dir mal an: http://www.gollatz.net/download.php?1.

MfG,
d3g

Christian Seehase 2. Nov 2002 11:53

Moin d3g,

ob die Umleitung mit > nicht funktioniert dürfte wohl davon abhängen, ob das Programm auf StdOut oder auf StdError schreibt.

In der Form

1> Dateiname

wird StdOut umgeleitet, in der Form

2> Dateiname

hingegen StdError.

theomega 2. Nov 2002 12:03

Der PHP-Parser kann die Befehle nicht verarbeiten, wenn sie als Parameter kommen. Du mußt die Befehle erst in eine Daten speichern und dann php.exe mit dem Dateinamen als Parameter. Die Ausgabe kannst du mit "> ausgabe.html" abfangen!

d3g 2. Nov 2002 12:27

... oder (eleganter) die Daten über eine Pipe auf den StdIn des Programms schreiben.

@Chris: Auf meinem System (Windows ME) macht der >-Operator sowohl mit dem StdOut als auch mit dem StdErr manchmal (!) Probleme. Keine Ahnung woran das liegt.

MfG,
d3h

Christian Seehase 2. Nov 2002 13:58

Moin d3g,

ich kenn', im Wesentlichen, nur NT 4 / W2K. Da hatte ich solche Probleme noch nie.
Und ich brauche diese Umleitungen öfter mal. ;-)

ME = More Errors :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:21 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz