![]() |
ActiveX COM mit Delphi 2010
Hallo Gemeinde,
Ich habe mir das Buch COM/DCOM für Delphi besorgt. Ich habe nach Anleitung versucht einen in process Server zu erstellen. (Seite 152) Da aber die Anleitung für Delphi 4 beschrieben ist, habe ich mir gedacht, das sollte ja mit Delphi 2010 nicht großartig anders sein. PUSTEKUCHEN!!!! Laut Buch kann mann über den Kontexmenu die Methoden der COM Klasse in die Type Libary eintragen. Dies konnte ich bei Delphie 2010 nicht und musste dieses Handisch nachgetragen. Aber Leider Funktioniert dies nicht. Beim erstellen eines OLEObjectes war alles in Ordnung, ich kann jedoch nicht auf die beiden Methoden zugreifen und kriege eine Meldung das diese nicht zur verfügung stehen. Weiß jemand zufällig was ich hier falsch gemacht habe bzw gibt es ein Tutorial für d2010? Hier mal mein Quellcode
Delphi-Quellcode:
und die Bibliothek
unit COMMWST_Impl;
{$WARN SYMBOL_PLATFORM OFF} interface uses ComObj, ActiveX, COMMWST_TLB, StdVcl; type TMWST = class(TAutoObject, IMWST) private FMWSTSatz: Real; Public procedure Initialize; override; function GetBrutto(const aNetto: Currency): Currency; safecall; procedure SetPercent(const aPercent: integer); safecall; protected end; implementation uses ComServ; { TMWST } function TMWST.GetBrutto(const aNetto: Currency): Currency; begin Result := aNetto * FMWSTSatz; end; procedure TMWST.Initialize; begin inherited Initialize; end; procedure TMWST.SetPercent(const aPercent: integer); begin FMWSTSatz := 1.0 + (aPercent); end; initialization TAutoObjectFactory.Create(ComServer, TMWST, Class_MWST, ciMultiInstance, tmApartment); end.
Delphi-Quellcode:
Ich hoffe ich habe zur späten Stunde nicht alzu großen Kauderwelsch zusammgeschrieben.
unit COMMWST_TLB;
// ************************************************************************ // // WARNUNG // ------- // Die in dieser Datei deklarierten Typen wurden aus Daten einer Typbibliothek // generiert. Wenn diese Typbibliothek explizit oder indirekt (über eine // andere Typbibliothek) reimportiert wird oder wenn der Befehl // 'Aktualisieren' im Typbibliotheks-Editor während des Bearbeitens der // Typbibliothek aktiviert ist, wird der Inhalt dieser Datei neu generiert und // alle manuell vorgenommenen Änderungen gehen verloren. // ************************************************************************ // // $Rev: 17244 $ // Datei am 08.10.2011 01:17:05 erzeugt aus der unten beschriebenen Typbibliothek. // ************************************************************************ // // Typbib.: D:\SVN\COM_Server\COM_MWST (1) // LIBID: {707D6E5D-0886-4BED-A8EB-2305E6F026A0} // LCID: 0 // Hilfedatei: // Hilfe-String: // Liste der Abhäng.: // (1) v2.0 stdole, (C:\Windows\SysWOW64\stdole2.tlb) // ************************************************************************ // {$TYPEDADDRESS OFF} // Unit muss ohne Typüberprüfung für Zeiger compiliert werden. {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} {$ALIGN 4} interface uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants; // *********************************************************************// // In der Typbibliothek deklarierte GUIDS. Die folgenden Präfixe werden verwendet: // Typbibliotheken : LIBID_xxxx // CoClasses : CLASS_xxxx // DISPInterfaces : DIID_xxxx // Nicht-DISP-Interfaces: IID_xxxx // *********************************************************************// const // Haupt- und Nebenversionen der Typbibliothek COMMWSTMajorVersion = 1; COMMWSTMinorVersion = 0; LIBID_COMMWST: TGUID = '{707D6E5D-0886-4BED-A8EB-2305E6F026A0}'; IID_IMWST: TGUID = '{B82F856E-4564-4DBA-B0D2-6A42C7B11B5A}'; CLASS_MWST: TGUID = '{7EA608E5-C04C-4051-97CA-70A10CE46009}'; type // *********************************************************************// // Forward-Deklaration von in der Typbibliothek definierten Typen // *********************************************************************// IMWST = interface; IMWSTDisp = dispinterface; // *********************************************************************// // Deklaration von in der Typbibliothek definierten CoClasses // (HINWEIS: Hier wird jede CoClass ihrem Standard-Interface zugewiesen) // *********************************************************************// MWST = IMWST; // *********************************************************************// // Interface: IMWST // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {B82F856E-4564-4DBA-B0D2-6A42C7B11B5A} // *********************************************************************// IMWST = interface(IDispatch) ['{B82F856E-4564-4DBA-B0D2-6A42C7B11B5A}'] function GetBrutto(const aNetto: Currency): Currency; safecall; procedure SetPercent(const aPercent: integer); safecall; end; // *********************************************************************// // DispIntf: IMWSTDisp // Flags: (4416) Dual OleAutomation Dispatchable // GUID: {B82F856E-4564-4DBA-B0D2-6A42C7B11B5A} // *********************************************************************// IMWSTDisp = dispinterface ['{B82F856E-4564-4DBA-B0D2-6A42C7B11B5A}'] function GetBrutto(const aNetto: Currency): Currency; dispid 2; procedure SetPercent(const aPercent: integer); dispid 2; end; // *********************************************************************// // Die Klasse CoMWST stellt die Methoden Create und CreateRemote zur // Verfügung, um Instanzen des Standard-Interface IMWST, dargestellt // von CoClass MWST, zu erzeugen. Diese Funktionen können // von einem Client verwendet werden, der die CoClasses automatisieren // will, die von dieser Typbibliothek dargestellt werden. // *********************************************************************// CoMWST = class class function Create: IMWST; class function CreateRemote(const MachineName: string): IMWST; end; implementation uses ComObj; class function CoMWST.Create: IMWST; begin Result := CreateComObject(CLASS_MWST) as IMWST; end; class function CoMWST.CreateRemote(const MachineName: string): IMWST; begin Result := CreateRemoteComObject(MachineName, CLASS_MWST) as IMWST; end; end. |
AW: ActiveX COM mit Delphi 2010
Hat denn keiner auch das Problem, oder sehe ich nur den Wald vor lauter Bäume nicht?
|
AW: ActiveX COM mit Delphi 2010
Ich habe folgenden Link in meiner Linkliste gefunden:
![]() ![]() Vielleicht hilft es dir weiter. Gruß Delphi-Apostel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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