Avanti-cl mit Delphi - ???
Sibylle Koczian
Sibylle.Koczian at bibliothek.uni-augsburg.de
Mi Mai 29 14:27:06 CEST 2002
Lieber Herr Schmid, liebe Liste,
bei mir funktioniert nicht einmal der Versuch, in einem Delphi-Programm
avanti-cl seinen Job aus einer Datei beziehen und das Ergebnis in eine
andere Datei schreiben zu lassen.
Verfahren bisher:
1) Mit CreateFile zwei Dateien oeffnen. Eine enthaelt den Job und wird mit
"GENERIC_READ" und "OPEN_EXISTING" geoeffnet. Die andere wird mit
"GENERIC_WRITE" und "CREATE_ALWAYS" geoeffnet und soll das Ergebnis aufnehmen.
2) Eine StartupInfo-Struktur fuer CreateProcess mit den noetigen Werten
belegen:
dwFlags = STARTF_USESTDHANDLES,
StartInf.hStdInput := InHdl;
StartInf.hStdOutput := OutHdl; // InHdl und OutHdl wurden von den beiden
CreateFile-Aufrufen zurueckgegeben
3) CreateProcess aufrufen mit dem Programmnamen, dem Startverzeichnis und
der eben belegten StartupInfo-Struktur.
4) Mit WaitForSingleObject warten, bis der Prozess beendet ist, und dann
sein Handle schliessen.
5) Die Handles InHdl und OutHdl schliessen.
Es gibt keine Fehlermeldung, aber die Ausgabedatei bleibt leer. Es liegt
nicht am Job ('help available'), in der DOS-Box kann ich die gleiche
Jobdatei mit Erfolg benutzen.
Ich habe die SECURITY_ATTRIBUTES ueberall auf NULL gesetzt, weil ich
dachte, es muessen hier keine Handles _vererbt_ werden, es werden welche
explizit uebergeben. Ist das vielleicht verkehrt?
Mit Pipes kriege ich schon gar nichts auf die Reihe, deshalb wollte ich es
zuerst so versuchen und von da aus weitermachen.
Was mache ich falsch?
Danke und beste Gruesse, Koczian
P.S. Mit Python funktioniert es wunderbar - aber ich moechte lieber doch
mehr ueber API-Funktionen in Delphi als ueber GUI-Programmierung mit Python
lernen ... Und uebrigens: die Nicht-Korrektur von Registereintraegen, s.
meine Mail vom 27.5., passiert mit avanti-cl genau so. Aber das war zu
erwarten, es arbeitet Jobs ja wohl nicht anders ab als procav.exe?
Dr. Sibylle Koczian
Universitaetsbibliothek , Abt. Naturwiss.
D-86135 Augsburg
Tel.: (0821) 598-2400, Fax : (0821) 598-2410
e-mail : Sibylle.Koczian at Bibliothek.Uni-Augsburg.DE
Mehr Informationen über die Mailingliste Allegro