ExecuteProcess und Fehlerausgabe

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Joh
Lazarusforum e. V.
Beiträge: 302
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

ExecuteProcess und Fehlerausgabe

Beitrag von Joh »

Moin,

ich möchte in einer Konsolenanwendung (Win11, cmd.exe) das pdfToolkit aufrufen, muß dabei 'nen Fehler abfangen.
Aber wenn Fehler, dann soll die Ausgabe in eine Datei umgelenkt werden:

auf der Shell:

Code: Alles auswählen

f:\Tools\pdfTK\bin\pdftk.exe E968.pdf output plain.pdf uncompress 2>>pdftk.log
alles ok...

rufe ich das vom Programm aus auf:

Code: Alles auswählen

retWert := SysUtils.ExecuteProcess('f:\Tools\pdfTK\bin\pdftk.exe', Datei + ' output plain.pdf uncompress 2>>pdftk.log');
if retWert <> 0 then
sehe ich auf der Konsole die Fehlermeldung und es wird kein Log erzeugt/geschrieben.

Wie erkläre ich ExecuteProcess, das die Fehlerausgabe umgelenkt werden soll?

Joh
just my two Beer

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 393
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: ExecuteProcess und Fehlerausgabe

Beitrag von Jorg3000 »

Hi Joh!

ExecuteProcess() kann keine Textrückgabe. Dazu bräuchte man TProcess, wo man stdout und stderr umleiten kann.

Falls der Dateiname ein Leerzeichen enthält, hilft es, den Namen in Anführungszeichen zu setzen.

Code: Alles auswählen

retWert := SysUtils.ExecuteProcess('f:\Tools\pdfTK\bin\pdftk.exe', '"'+Datei+'" output plain.pdf uncompress 2>>pdftk.log');

Joh
Lazarusforum e. V.
Beiträge: 302
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: ExecuteProcess und Fehlerausgabe

Beitrag von Joh »

TProcess hatte ich vorher... Aber da öffnet sich jedesmal eine neue Konsole...

bei 6000 Dateien ist das ein wildes geflacker...
Dann lebe ich lieber ohne Fehlerausgabe.
just my two Beer

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 393
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: ExecuteProcess und Fehlerausgabe

Beitrag von Jorg3000 »

Das Konsolenfenster kann man bei TProcess abschalten.

Code: Alles auswählen

AProcess.Options := [poUsePipes, poNoConsole];
https://www.freepascal.org/docs-html/fc ... ption.html

Joh
Lazarusforum e. V.
Beiträge: 302
Registriert: Sa 26. Mai 2012, 17:31
OS, Lazarus, FPC: Win 10 (L 2.2.6 x64 FPC 3.2.2)
CPU-Target: 64Bit

Re: ExecuteProcess und Fehlerausgabe

Beitrag von Joh »

Danke
just my two Beer

Antworten