Ich erzeuge im OnCreate ein
COM-Objekt, und im OnDestroy möchte ich es mit _Release wieder freigeben. Aber kurz vor Ende des Programms wird selbiges in der Entwicklungsumgebung angehalten, bzw. wenn man es außerhalb startet, kommt Runtime Error 216 (was immer das sein möge). In einem vorherigen Test kam eine EExternalException in der NTDLL.DLL. Das
COM-Objekt wird korrekt erzeugt und ich kann es benutzen. Wenn ich es nicht freigebe, wird die Anwendung korrekt beendet. Ich benutze Delphi 3 Professional und Windows XP ohne Service Pack. Was mache ich falsch bzw. was fehlt noch?
Delphi-Quellcode:
unit Test;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComObj, MSXML2_TLB;
const
CLSID_DOMDocument40: TGuid = '
{88d969c0-f192-11d4-a65f-0040963251e5}';
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
Doc: IXMLDOMDocument2;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Doc := CreateComObject(CLSID_DOMDocument40)
As IXMLDOMDocument2;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if (Doc <>
nil)
then
Doc._Release;
end;
end.