AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ActiveX COM mit Delphi 2010

Ein Thema von WizoHulk · begonnen am 8. Okt 2011 · letzter Beitrag vom 10. Okt 2011
Antwort Antwort
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#1

ActiveX COM mit Delphi 2010

  Alt 8. Okt 2011, 01:24
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:
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.
und die Bibliothek
Delphi-Quellcode:
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.
Ich hoffe ich habe zur späten Stunde nicht alzu großen Kauderwelsch zusammgeschrieben.

Geändert von WizoHulk ( 8. Okt 2011 um 11:59 Uhr)
  Mit Zitat antworten Zitat
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#2

AW: ActiveX COM mit Delphi 2010

  Alt 9. Okt 2011, 10:43
Hat denn keiner auch das Problem, oder sehe ich nur den Wald vor lauter Bäume nicht?
  Mit Zitat antworten Zitat
DelphiApostel

Registriert seit: 12. Apr 2005
10 Beiträge
 
Delphi 2010 Enterprise
 
#3

AW: ActiveX COM mit Delphi 2010

  Alt 10. Okt 2011, 16:37
Ich habe folgenden Link in meiner Linkliste gefunden:

http://docwiki.embarcadero.com/RADSt...M_Applications (http://docwiki.embarcadero.com/RADSt...ers_-_Overview)

Vielleicht hilft es dir weiter.

Gruß
Delphi-Apostel

Geändert von DelphiApostel (10. Okt 2011 um 16:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz