Wenn dies Ihr erster Besuch hier ist,
lesen Sie bitte zuerst die Hilfe - Häufig gestellte Fragen
durch. Sie müssen sich vermutlich registrieren,
bevor Sie Beiträge verfassen können. Klicken Sie oben auf 'Registrieren', um den Registrierungsprozess zu
starten. Sie können auch jetzt schon Beiträge lesen. Suchen Sie sich einfach das Forum aus, das Sie am meisten
interessiert.
für diese Aufgabe sieht Delphi vor, dass der eigene COM-Server einen eigenen Nachfahren der <b>Class Factory</b> implementiert und dort die zusätzlichen Schritte abarbeitet. In der geerbten Methode <b>UpdateRegistry</b> kann über <b>if Register then...</b> geprüft werden, ob der Server registriert wird. Das folgende Beispiel demonstriert, wie zum Beispiel das neue Apartment-Modell <b>Neutral</b> für Windows 2000 beim Registrieren eingetragen wird:
Schritt 1: Eigenen Class Factory-Nachfolger ableiten
<pre>
type
TTNAAutoObjectFactory = class(TAutoObjectFactory)
procedure UpdateRegistry(Register: Boolean); override;
end;
{ TTNAAutoObjectFactory }
procedure TTNAAutoObjectFactory.UpdateRegistry(Register: Boolean);
var
sClassID, sServerKeyName: String;
begin
inherited UpdateRegistry(Register);
if Register then
begin
if Instancing = ciInternal then Exit;
sClassID := GUIDToString(ClassID);
sServerKeyName := 'CLSID\' + sClassID + '\' + ComServer.ServerKey;
if (ThreadingModel <> tmSingle) and IsLibrary then
CreateRegKey(sServerKeyName, 'ThreadingModel', 'Neutral');
end;
end;
</pre>
Schritt 2: Eigene Class Factory aktivieren
<pre>
initialization
(*
TAutoObjectFactory.Create(ComServer, TTNAObjSrv, Class_TNAObjSrv,
ciMultiInstance, tmApartment);
*)
TTNAAutoObjectFactory.Create(ComServer, TTNAObjSrv, Class_TNAObjSrv,
ciMultiInstance, tmApartment);
end.
</pre>
Hallo Herr Kosch,
beim Test ihres Beispiels habe ich folgende Fehlermeldung erhalten:<br>
"Methode 'UdateRegistry' nicht in Basisklasse gefunden"<br>
Was muß ich noch einbinden, um die Funktion verwenden zu können ?<br>
Vielen Dank <br>Dietma
Comment