AW: AW: Zugriff auf Avanti-cl mit Delphi

Sibylle Koczian Sibylle.Koczian at bibliothek.uni-augsburg.de
Mo Dez 1 11:27:20 CET 2003


Lieber Herr Schmid,

At 10:47 01.12.03 +0100, you wrote:
>Hallo Frau Koczian,
>
> > eine Google-Newsgroup-Suche hat eine Menge Code-Beispiele zum
> > Umleiten der Standardausgabe ins eigene Delphi-Programm
> > zutage gefoerdert, und eines hat sich so anpassen lassen,
> > dass es jetzt funktioniert. Komischerweise eins von den
> > aelteren Beispielen, die ich gefunden habe. Im Prinzip ganz
> > aehnlich wie gehabt (drei anonyme Pipes), allerdings umstaendlicher.
> >
> > Beste Gruesse,
> > Koczian
>
>wenn ich mich richtig erinnere, habe ich Ihnen doch mal die Routine
>geschickt, mit der ich die Umleitung mache. Haben Sie das noch? Und hat das
>nicht richtig funktioniert? Bzw. haben Sie jetzt was besseres? Wenn ja, wäre
>ich an einer Diskussion über die Vorteile interessiert.

Das war's ja: die Routine, die Sie mir geschickt hatten, funktioniert mit 
dem neuesten avanti-cl nicht mehr, sie bleibt bei "ReadFile" regelmaessig 
haengen. Die neue, die ich aus dem Netz gefischt habe, orientiert sich 
stark an einem MSDN-Artikel zum Thema Umleitung der Standard-Ein- und 
Ausgabe (habe die genauen Daten im Moment nicht hier, sondern zuhause). Der 
Hauptunterschied scheint mir zu sein, dass jede der drei Pipes zuerst mit 
einem temporaeren Handle erzeugt wird, das dann per "DuplicateHandle" 
kopiert wird. Danach wird das Original zugemacht. Der Kindprozess kriegt 
die duplizierten Handles (sage ich im Augenblick aus dem Gedaechtnis).

Das einzige, was daran in meinen Augen besser ist: es funktioniert mit dem 
neuesten avanti-cl. Warum das so ist, und was sich da geaendert hat, weiss 
ich nicht, und wuesste ich gern. Es koennte sein, dass ich nur mehr 
Pipe-Enden vor dem Lesen aus der Standardausgabe von avanti-cl haette 
schliessen muessen.

Schlecht ist bei meinem Testprogramm im Augenblick noch die Uebergabe des 
Avanti-Ergebnisses an ein Memofeld: die Job-Abarbeitungsfunktion liefert 
einen String, und wenn der nur #10 als Zeilentrenner enthaelt, dann gibt 
das im Memofeld eben keine Zeilenumbrueche, sondern nur schwarze Kaestchen. 
"help" als Test-Job macht das gleich sichtbar.

Das ist aber ein minderes Problem; die Funktion koennte z.B. auch in einen 
Stream schreiben, die LoadFromStream-Methode des Memofeldes erzeugt dann 
richtige Umbrueche.

>Meine Routine läuft in AvantiB hier in Benediktbeuern nun schon einige
>Monate ohne jeden Absturz (zumindest glaube ich, die 3 oder 4 Abstürze, die
>wir hatten, auf die Backup-Software schieben zu können).

Das wundert mich gar nicht, denn Sie sagten ja, dass Sie eben nicht auf die 
neueste Avanti-cl-Version umgestiegen sind, und erst die hat ja diesen 
Aerger gemacht.

Wenn Sie gern meine Routine, die Adresse des MSDN-Artikels oder die 
Beispiele haetten, auf denen ich aufgebaut habe, sagen Sie es - wie gesagt, 
heute habe ich nichts dabei, aber es ist alles greifbar.

Beste Gruesse,
Koczian


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