![]() |
Word-OleObject korrekt schliessen?
Hallo,
Ich öffne per OleContainer ein Worddokument, habe jetzt beim Beenden des Programms folgende Probleme: 1.Es existiert nach wie vor eine WINWORD.EXE im Taskmanager //2.Es kommt eine AV in der ole32.dll und dann dreimal Runtime Error 216 bei 004038A6 und zweimal 0042CDAE(Hat sich erledigt :) ) ich löse ein Olecontainer1.OleObject.Application.Quit vor dem schliessen aus, was eigentlich doch genügen sollte oder? Hoffe ihr habt Antworten :? :angel: |
Re: Word-OleObject korrekt schliessen?
So, nachdem die Runtime-Errors zwischenzeitlich weg waren, sind diese schon wieder da.
Das programm schliesst sich immernochnicht... hat keiner eine Idee? :angel: |
Re: Word-OleObject korrekt schliessen?
Die Fehler aus den andern beiden Threads konnte ich zwar beheben, aber die Runtime-Errors sind noch da.
Weis da mittlerweile jemand was ich da falsch machen könnte? Also der Ablauf sieht so aus: CreateObjectFromFile; Objektinhalt bearbeiten Objekt, bzw. Dokument in Datei speichern //Hier muss ich denke ich etwas tun, aber ich weis nicht was... Formular schliessen |
Re: Word-OleObject korrekt schliessen?
Hallo,
das erzeugte OLE-Objekt auf NIL setzen ? Heiko |
Re: Word-OleObject korrekt schliessen?
Das Problem ist, das mein OLE-Objekt(OleContainer1.OleObject) eine Nur-Lesen-Eigenschaft ist und ich der keinen Wert, also auch nicht NIL zuweisen kann.
Deswegen versuche ich die Funktion OleContainer1.DestroyObject aufzurufen um es freizugeben, was zwar functioniert, aber nichts an den Fehlern ändert. |
Re: Word-OleObject korrekt schliessen?
hatte mal so eine meldung wegen meinem virenprogram von norton
|
Re: Word-OleObject korrekt schliessen?
Virenprogramm war aktiv, habs grad ausgeschaltet, Runtime-Errors kommen aber immernoch
|
Re: Word-OleObject korrekt schliessen?
Hat echt keiner ne Ahnung was ich verkehrt mache? Ich kann echt keine Runtime Errors mehr sehn :cry:
|
Re: Word-OleObject korrekt schliessen?
Moin :-)
Probier das mal so:
Delphi-Quellcode:
...
//--Dokument in OleContainer laden if (OleContainer1.State = osEmpty) then begin OleContainer1.CreateObjectFromFile(cDokument, False); OleContainer1.Run; OleContainer1.Align := alClient; OleContainer1.SizeMode:= smScale; OleContainer1.Visible := True; //--falls noch nicht sichtbar end else OLEContainer1.doVerb(1); ... //--Dokument schließen(speichern) und OLEContainer freigeben (vorzugsweise im FormClose): ... if OleContainer1.State<>osEmpty then begin //änderungen im Formular speichern OleContainer1.SaveAsDocument(cDokument); Visible := False; OleContainer1.Close; OleContainer1.DestroyObject; end; |
Re: Word-OleObject korrekt schliessen?
zum schliessen evrwende ich:
OleContainer1.OleObject.Application.Quit; OleContainer1.DestroyObject; OleContainer1.Destroy; Aber das Word geht einfach nicht zu, es ist und bleibt in den Prozessen... ich verwende OleContainer1.DoVerb(ovShow); um das Objekt anzuzeigen, vllt macht das Probleme, denn ovShow ist -1, aber ein Versuch mit 1 hat auch keine Besserung gebracht. :( Edit: Mir ist grad aufgefallen, dass das Programm wenns "normal" läuft 9 Threads im Taskmanager anzeigt, wenn ich diesen OleContainer öffne jedoch 4 dazukommen, also 13. Wenn ich das Fenster mit dem OleContainer jetzt schliesse und auch freigebe, bleibt es allerdings auf 13. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz