![]() |
Hallodriii,
Du solltest PHPOutput mittel PChar(PHPOutput) in einen Char ändern. Bei den anderen auch. Servus. :hi: |
jo, ok, habe nun:
Code:
Es gibt keine Fehlermeldung !
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); 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
|
Du solltest die Datei selbst mit
Code:
anlegen.
FileCreate('C:\Windows\Desktop\text.txt');
Und dann nur noch zum Schreiben öffnen. |
Moin Rebugger,
ich hab' Deine letzten Codeschnipsel mal ein wenig überarbeitet:
Code:
Da Du offensichtlich nicht die einzelnen Zeilen brauchst (immerhin löscht Du ja alle Zeilenvorschübe), dürfte diese Variante etwas resourcensparender sein.
[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]; Bist Du sicher, dass es funktioniert, wenn Du alle Zeilenvorschübe löscht? |
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: ![]() MfG, d3g |
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. |
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!
|
... 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 |
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. |
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