AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Programm hängt sich bei Druck via Word 2007 auf
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von TomF9 · begonnen am 1. Okt 2013 · letzter Beitrag vom 8. Okt 2013
Antwort Antwort
TomF9

Registriert seit: 1. Okt 2013
14 Beiträge
 
#1

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

  Alt 1. Okt 2013, 11:24
@nahpets

Nein Word läuft im Hintergrund und ich vermute das ich das unserem Kunden nicht erklären kann das er vorübergehen Word sieht
Es kann natürlich auch ein Fehler von Word sein (Fehler tritt nur mit Word 2007 in Kombination mit Win7 auf). Aber auch hier kann mir die Microsoft Seite nicht weiterhelfen
Wie gesagt ich such schon seit 2-3 Monaten nach dem Fehler und weiß nicht mehr weiter.
D. h.: Du kannst den Fehler nicht reproduzieren, da er nur bei bestimmten Kunden und bestimmten Kombinationen gelegentlich auftritt?

Wie geht Dein Programm mit einer bereits laufenden Wordinstanz um? Nutzt Du ein bereits laufendes Word oder machst Du für Dein Programm immer eine neue Wordinstanz?

Welche Werte hast Du bei Deiner Wordinstanz für AutoConnect, ConnectKind und AutoQuit?
Richtig ich kann denn Fehler nicht nachstellen da er auftritt oder eben nicht.

Mein Programm erstellt sich eine eigene Wordinstanz d.h.
Delphi-Quellcode:
      WordApp.ConnectKind := ckNewInstance;
      WordApp.AutoConnect := False;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

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
TomF9

Registriert seit: 1. Okt 2013
14 Beiträge
 
#3

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

  Alt 1. Okt 2013, 13:25
Hab das ganze mit Logmeldungen gefüllt nach jeder Zeile und der letzte Eintrag ins Logfile war jener der Vor "Word.Quit" geschrieben wurde, der danach nicht mehr.
(Habe die Befehle zum Loging allerdings in meinem Post aufgrund besserer leserlichkeit entfernt).

Normalerweiße müsste sich doch eine neue Instanz von Word starten wenn ich Word manuell Starte oder?
Außerdem hab ich das ganze schon mehrmals gesehen und nie hatte einer der Kunden Word geöffnet, daher gehe ich nicht davon aus das sich jemand meine Instanz "klaut".

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?

Ich bin hier echt am verzweifeln.
Ich werde mal das mit dem Paramter umsetzen und zu einem Kunden zum Testen spielen, mal sehen was passiert.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

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
TomF9

Registriert seit: 1. Okt 2013
14 Beiträge
 
#5

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

  Alt 4. Okt 2013, 08:36
Zitat:
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.
Ich gebe ja denn Connect Kinde "ckNewInstance" mit. Daher bin ich davon ausgegegangen das eine neue Instanz von Word gestartet wird.

Zitat:
Hast Du mal im Taskmanager geschaut, ob im Fehlerfalle eine oder mehrere Wordinstanzen zu sehen sind?
Ja habe keine weiteren Wordinstanzen gefunden.

Zitat:
Es muss ja nicht immer noch ein weiteres Dokument offen sein.
Da ich eine eigene Instanz geöffnet habe in der nur dieses eine Dokument geöffnet wird dürfte es ja auch nur dieses eine Dokument zum schließen geben, daher müsste der Fehler ja immer auftreten wenn sich in meiner Instanz noch irgendwie ein 2tes Dokument befinden würde.

Zitat:
Ist sichergestellt, dass der Ausdruck zum Zeitpunkt des Quit bereits fertig ist?
Die Kunden erhalten noch einen Ausdruck und danach geht ohne neustart des Programms nichts mehr. Auch hier währe es doch so das der selbe Brief beim selben Arbeitsplatz immer zum Fehler führen würde, dem ist allerdings nicht so.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

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

  Alt 5. Okt 2013, 13:33
Zitat:
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.
Ich gebe ja denn Connect Kinde "ckNewInstance" mit. Daher bin ich davon ausgegegangen das eine neue Instanz von Word gestartet wird.
Ja, aber wenn nach dem Start Deiner Wordinstanz noch jemand Word nutzen möchte, so kann er ggfls. Deine Wordinstanz mitbenutzen. In dem Fall siehst Du im Taskmanager nur eine Wordinstanz (nämlich Deine), kannst aber nicht erkennen, ob sie noch anderweitg mitbenutzt wird und damit noch über weitere geöffnete Dokumente verfügen könnte.

Zitat:
Die Kunden erhalten noch einen Ausdruck und danach geht ohne neustart des Programms nichts mehr. Auch hier währe es doch so das der selbe Brief beim selben Arbeitsplatz immer zum Fehler führen würde, dem ist allerdings nicht so.
Also der klassische "ichtretenurmanchmalunreprodizierbarauf" Fehler.

Wenn Du Dein Programm in der Fehlersituation beendest, wird dann die Wordinstanz auch beendet (verschwindet aus dem Taskmanager) oder bleibt sie eventuell bestehen? Läßt sich Dein Programm regulär beenden oder musst Du es per Taskmanager beenden?

Sind alle Arbeitsplätze mit Word 2007 betroffen oder nur einige. Wenn nur einige, so prüfe mal die Konfiguration aller Word, auch die der Arbeitsplätze ohne dieses Problem, um eventuelle Konfigurationsunterschiede festzustellen.

Habe auf meinem Rechner COMODO-Firewall und Avira Free Antivirus.
Hier tritt ab und an der Phänomen auf, dass die Kommunikation zwischen Programmen oder der Start einzelner Programme scheitern. Ein zweiter Start der Programme bzw. der Kommunikation funktioniert dann. Hier wird wohl irgendwie im Hintergrund von den beiden noch eine Überprüfung durchgeführt, die (eventuell?) einige Resouren bis zur Beendigung der Prüfung belegt/blockiert. Sind beide deaktiviert tritt das Problem nicht auf.
Könnte es eventuell auch eine ähnliche (Mit)Ursache Deines Problemes geben?
  Mit Zitat antworten Zitat
TomF9

Registriert seit: 1. Okt 2013
14 Beiträge
 
#7

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

  Alt 7. Okt 2013, 07:08
Zitat:
Wenn Du Dein Programm in der Fehlersituation beendest, wird dann die Wordinstanz auch beendet (verschwindet aus dem Taskmanager) oder bleibt sie eventuell bestehen? Läßt sich Dein Programm regulär beenden oder musst Du es per Taskmanager beenden?
Das mit der Word-Instanz habe ich noch nie geprüft werde ich aber beim nächsten Fall machen.
Mein Programm ist nach dem Fehler total am Ende, wenn man es minimieren will dauert das ganze 2 Minuten wenn man es wieder maximiert dauert es ewig bis die ganze GUI geladen ist. Beenden kann man es nur noch über denn Taskmanager da sich der "schöne" blaue Kreis dreht und dreht und dreht.

Zitat:
Sind alle Arbeitsplätze mit Word 2007 betroffen oder nur einige. Wenn nur einige, so prüfe mal die Konfiguration aller Word, auch die der Arbeitsplätze ohne dieses Problem, um eventuelle Konfigurationsunterschiede festzustellen.
Nein es sind nicht alle Word 2007 AP's betrofen. Auch Konfigurationsunterschiede sind auf einen groben Blick nicht festzustellen,
kann mir auch nicht vorstellen das es welche gibt da die Word-Einstellungen für alle Benutzer meines Programms von Zentraler stelle aus gewartet werden.

Zitat:
Habe auf meinem Rechner COMODO-Firewall und Avira Free Antivirus.
Nein es gibt nur Symantech Endpoint Protection.

Interessant ist auch das eine Neuinstallation von Word das Problem für ein paar Wochen (zwischen 5-8 ca.) löst danach hat man wieder die selben Probleme
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz