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
Seite 1 von 2  1 2      
TomF9

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

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

  Alt 1. Okt 2013, 10:12
Hallo liebe Delphifreunde,

Vorab, ich bin neu hier also es sei mir verziehen wenn ich im falschen Thread des Forums bin

Ich habe seit geraumer Zeit Probleme mit einer Delphianwendung die in Delphi 2006 entwickelt ist (sagt mir jetzt nicht ihr helft mir nicht weil das Teil so alt ist ). Diese Anwendung erstellt abhängig von gewissen Einstellungen einen angepassten Wordbrief, und druckt diesen anschließend aus (oder zeigt ihn an/verschickt ihn per Mail).

Allerdings habe ich seit einigen Monaten immer wieder das Problem das das Programm nach dem Drucken hängen bleibt, d.h. der Ausdruck kommt noch aus dem Drucker aber das Programm bleibt hängen, und zwar soweit ich das per Log-File nachvollzogen habe genau an der Stelle wo Word geschlossen werden soll.

Ich habe nun schon einige Tipps der Microsoft Support Seite befolgt, die alle ohne Ergebniss blieben, daher hoffe ich das einer von euch dieses Problem schon mal hatte, bzw eine Idee hat wie man das ganze lösen kann da ich inzwischen ziemlich ratlos bin.

Falls noch irgendwelche Fragen auftauchen, raus damit

mfg
TomF9
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

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

  Alt 1. Okt 2013, 10:16
a)
Hat das Programm schonmal gelaufen ( ohne aufhänger ? ) sry für diese komische frage, :p
b)
Wie wärs mal mit bisschen code ?
c)
hattest du nachdem es abstürze kamen an dem Program was verändert ?


da has du weitere Frage.

PS. Willkommen bei DP
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

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

  Alt 1. Okt 2013, 10:37
Hallo,

hätte da mal eine Frage:

Hängt deine Applikation oder hängt Word?

Wird Word während des Druckes angezeigt? Wenn nein, versuche es mal hiermit:
Delphi-Quellcode:
procedure TfmSHSKonfiguration.WordAnzeigen;
begin
  WordApplication.Visible := True;
  WordApplication.ShowMe;
  WordApplication.Activate;
  Application.ProcessMessages;
end;
Diese Routine (oder die erforderlichen Teile daraus) vor dem Start des Ausdruckes aufrufen, dann sollte Word sichtbar werden. Nun kannst Du Word bei der Arbeit zuschauen und eventuell von Word ausgegebene Fehlermeldungen sehen. Eventuell hilft es ja weiter.
  Mit Zitat antworten Zitat
TomF9

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

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

  Alt 1. Okt 2013, 10:42
@mokus

1) Das ist auch ein sehr interessantes Verhalten, es funktioniert wenn man am tag 15 mal ausdruckt 14 mal und beim 15 mal schmiert das ganze ab. Man kann eigentlich keinen Zusammenhang feststellen.

2)
Delphi-Quellcode:
 
  Result := False;
  // ResetError;
  // ResetWarning;
  try
    InitializeWordApplication; //Hier wird Word gestartet
    try

      ovCurPrinterName := WordApp.ActivePrinter;
      try
        OpenDocument(fname);

        // UpdateFieldsAtPrint für das Aktualisieren der Seitennummern.
        WordApp.Options.UpdateFieldsAtPrint := ovTrue;

        SetWordPrinter(ovPrinterName,ovPaperTray); //Hier der Drucker gesetzt
        WordDoc.PrintOut(ovFalse{Background});
        WordDoc.Close; //Das geöffnete Dokument geschlossen
        Result := true;
      finally
        SetWordPrinter(ovCurPrinterName,ovPaperTray);
      end;
    finally
      //HIER TRITT DER FEHLER AUF
      CloseWordApplication; //Eine Unterfunktion aufgerufen die Word schließt und abhängig vom Brief und davon ob etwas geändert
                            //wird denn Brief speichert
    end;
  except
    on E: Exception do begin
      SetError(E);
    end;
  end;
Und in der Funktion CloseWordApplication passiert folgendes (natürlich ist das ganze in dem try/except Block aber das poste ich hier jetzt nicht ):

Delphi-Quellcode:
    if assigned(WordDoc) then
    begin
      if WordDocConnected then
      begin
        if WordAppConnected then
        begin
          // Evtl. offenes Dokument speichern und schliessen
          ovSaveChanges := wdSaveChanges;
          WordDoc.Close(ovSaveChanges{SaveChanges}, ovEmpty{OriginalFormat},
            ovEmpty{RouteDocument});
        end;
        WordDoc.Disconnect;
        WordDocConnected := False;
      end;
      WordDoc.Free;
      WordDoc := nil;
    end;
    if assigned(WordApp) then
    begin
      if WordAppConnected then
      begin
        // WordApp Objekt disconnecten und freigeben
        WordApp.Quit; //HIER BLEIBT ER HÄNGEN
        WordApp.Disconnect;
        WordAppConnected := False;
      end;
      WordApp.Free;
      WordApp := nil;
    end;
3)
Nein habe noch nicht wirklich was verändert außer das ich Log-Funktionen eingebaut habe um die genaue Stelle des Fehlers (WordApp.Quit) rauszufinden. Da ich nicht weiß wie ich diese Funktion zum laufen Bringen soll stehe ich hier vor nem Problem

@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.
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

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

  Alt 1. Okt 2013, 11:08
" (Fehler tritt nur mit Word 2007 in Kombination mit Win7 auf) "

mit word 2010 & word 03 geht es ?!
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
TomF9

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

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

  Alt 1. Okt 2013, 11:14
Word 2010 ist nicht in verwendung allerdings habe ich keine Probleme wenn 2003 verwendet wird.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

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

  Alt 1. Okt 2013, 11:27
@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?
  Mit Zitat antworten Zitat
TomF9

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

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

  Alt 1. Okt 2013, 12: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
 
#9

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

  Alt 1. Okt 2013, 12: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
 
#10

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

  Alt 1. Okt 2013, 14: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
Antwort Antwort
Seite 1 von 2  1 2      

 

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 11:45 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