Einzelnen Beitrag anzeigen

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, 09: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