Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#11

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

  Alt 1. Okt 2013, 14:01
Normalerweiße müsste sich doch eine neue Instanz von Word starten wenn ich Word manuell Starte oder?
Nein, so wie Du in Deinem Programm angeben kannst, ob Du eine neue Instanz möchtest oder eine vorhandene genutzt werden kann/soll, kann das jede Applikation auch machen. Hast Du z. B. ein Word gestartet und machst nun im Explorer einen Doppelklick auf ein Worddokument, so wird in der laufenden Wordinstanz ein weiteres Dokument geöffnet.
Außerdem hab ich das ganze schon mehrmals gesehen und nie hatte einer der Kunden Word geöffnet, daher gehe ich nicht davon aus, dass sich jemand meine Instanz "klaut".
Hast Du mal im Taskmanager geschaut, ob im Fehlerfalle eine oder mehrere Wordinstanzen zu sehen sind?
Auf das schließen aller Dokumente habe ich auch schon gedacht, allerdings währe dies dann so das der Fehler immer auftreten würde und nicht nur ab un zu oder?
Es muss ja nicht immer noch ein weiteres Dokument offen sein.
Ich werde mal das mit dem Paramter umsetzen und zu einem Kunden zum Testen spielen, mal sehen was passiert.
Hast Du eventuell einen Kunden, der etwas weniger "schmerzempfindlich" ist, dem Du zum Testen eine Programmversion geben kannst, bei der Word immer zu sehen ist und der bereit ist, Dir die Fehlermeldungen zu schicken... Oder ist der Fehler (auf einzelen Arbeitsplätzen?) doch so häufig, dass Du Dich "daneben" setzen kannst, um auf den Fehler zu warten? Dann könntest Du hierfür eine Programmversion nehmen, die Word sichtbar macht. Eventuell könntest Du ja auch das Sichtbarmachen von Word über einen Menüpunkt oder einen Shortcut realisieren, so dass nur bei Bedarf Word sichtbar wird.
Ist sichergestellt, dass der Ausdruck zum Zeitpunkt des Quit bereits fertig ist?
Da Du ja beim Ausdruck auch Felder aktuallisieren lässt, könnte es sein, dass die daraus resultierenden Änderungen beim Speichern des Dokumentes noch nicht vollständig erfolgt sind und daher beim Quit erneut nachgefragt wird, ob Änderungen gespeichert werden sollen.
Ist sichergestellt, dass sich die einzelnen Operationen, die von Word gemacht werden sollen, nicht "überholen"? Sprich: Die Steuerung von Word durch das Programm wird von Word genau in der Reihenfolge abgearbeitet, wobei jeder an Word geschickte Befehl von Word verarbeitet wurde, bevor der nächste Befehl geschickt wird. Bin mir nicht sicher, ob Word da zwar die Aufträge alle annimmt, für die Verarbeitung aber länger benötigt, als für die Auftragsannahme.

Wie groß sind die Dokumente? Sind die automatische Rechtschreib-/Grammatikprüfung und die Silbentrennung aktiviert? Bei großen Dokumenten kann die Rechtschreibprüfung zu Problemen führen, wenn die Zahl der (vermeintlichen) Rechtschreibfehler zu groß wird, dann kommt eine Meldung, die nachfragt, ob weiter geprüft werden soll oder nicht. Funktioniert hier z. B. die automatische Erkennung der Dokumentensprache durch Word nicht korrekt, so wird ggfls. in einer Sprache geprüft, die im Dokument nicht (wirklich) vorhanden ist, das kann dann sehr schnell zu sehr vielen Rechtschreibfehlern führen und damit zu der o. g. Meldung durch Word.

Wie machst Du genau den Ausdruck, führt diese Routine eventuell zu einem anderen Verhalten?
Delphi-Quellcode:
procedure TfmSHSKonfiguration.Drucken;
begin
  WordDocument.PrintOut;
  while WordApplication.BackgroundprintingStatus > 0 do begin
    statusbar.SimpleText := Format('%d Datei(en) zu drucken.',[WordApplication.BackgroundprintingStatus]);
    Application.ProcessMessages;
    Sleep(250);
  end;
  statusbar.SimpleText := 'Ausdruck ist erledigt.';
  Application.ProcessMessages;
end;
  Mit Zitat antworten Zitat