Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#9

AW: Delphi Programm hängt sich bei Druck via Word 2007 auf

  Alt 1. Okt 2013, 11:59
Ist absolut sichergestellt, dass das Problem beim Quit entsteht?
Delphi-Quellcode:
       WordApp.Quit; //HIER BLEIBT ER HÄNGEN
        WordApp.Disconnect;
        WordAppConnected := False;
Wie hast Du das überprüft?

Bei einem "Hänger" beim Quit liegt die Vermutung nahe, dass Word hier eine Frage stellt und auf eine Antwort wartet. Wenn Word aber unsichtbar ist, wird der Anwender dies nicht erfahren.

Momentan habe ich keine (sinnvolle) Idee, wie Du hier herausbekommen kannst, was die Ursache sein könnte.

Besteht die Möglichkeit, dass während des Ausdruckes aus einem anderen Grund (vom Anwender?) Word gestartet wird und sich die von Deinem Programm erstellte Instanz "krallt" und mitverwendet?

Ausgehend vom Quelltext müssten vor dem Quit alle Dokumente geschlossen sein. Könntest Du das im Programm prüfen, wenn dort noch (mindestens) ein Dokument offen ist, müsste hier eigentlich irgendwo ein Problem vorliegen.

In dem Fall könntest Du Word sichtbar machen und den Anwender weiter aggieren lassen. Dies wäre sicherlich nur eine temporäre Lösung, aber der Kunde hätte damit die Möglichkeit, Dich über den Zustand von Word in dieser Situation zu informieren.

(unschöne) Alternative:

Ist noch ein Dokument offen, dann machst Du weder Quit noch sonst was, sondern trennst nur Dein Programm von der Wordinstanz und lässt diese "weitergammeln". Damit kann man dann den Rechner aber mit "herrenlosen" Wordinstanzen zumüllen, ist also äußerst unschön.

Quit kann auch mit Parameter aufgerufen werden.
Delphi-Quellcode:
  ovParam := wdDoNotSaveChanges;
  WordApp.Quit(ovParam);
  WordApp.Disconnect;
Damit (sollte) Word geschlossen werden, ohne Änderungen zu speichern und ohne weitere Nachfragen seitens Word. Da Du Dein Dokument ja bereits vorher gespeichert und geschlossen hast, sollte das aus Sicht Deines Programmes unkritisch sein. Wenn aber die Wordinstanz anderweitig genutzt wird, so gehen dort eventuell vorgenommene Änderungen verloren und die Wordinstanz wird beendet. Das muss dann so auch nicht unbedingt erwünscht sein.
  Mit Zitat antworten Zitat