Thema: Delphi COM-Objekt freigeben

Einzelnen Beitrag anzeigen

OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#1

COM-Objekt freigeben

  Alt 25. Mai 2003, 14:10
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat