Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi WAS ist COM?? (https://www.delphipraxis.net/52271-ist-com.html)

QuickAndDirty 26. Aug 2005 13:02


WAS ist COM??
 
Also ich Programmiere mit Delphi 7 und soll unserem Makro Interpreter COM-Objekte verfügbar machen.
Hintergrund ist wohl eine Export Schnittstelle. Ich hab soweit in der Delphi Hilfe erkennen können
das es hier wohl um Netzwerkweit verfügbare Objekte geht die nach Client-Server-Manier Daten austauschen können.ODER???
Gibt es irgend wo ein tutorial dazu?

Bernhard Geyer 26. Aug 2005 13:19

Re: WAS ist COM??
 
Zitat:

Zitat von QuickAndDirty
Also ich Programmiere mit Delphi 7 und soll unserem Makro Interpreter COM-Objekte verfügbar machen.
Hintergrund ist wohl eine Export Schnittstelle. Ich hab soweit in der Delphi Hilfe erkennen können
das es hier wohl um Netzwerkweit verfügbare Objekte geht die nach Client-Server-Manier Daten austauschen können.ODER???
Gibt es irgend wo ein tutorial dazu?

Nein. das ist erst DCOM :-)
Aber evtl. reicht dir ja fürs erste der Wikipedia-Artikel

QuickAndDirty 26. Aug 2005 14:49

Re: WAS ist COM??
 
Ja es ist eine DCOM Object.
So Wie es aussieht Kann ich es einfach über
Delphi-Quellcode:
 v := CreateOleObjekt('MeineSchnittstelle');
Aufrufen.

Gibt es eine Möglichkeit die Methoden über invoke aufzurufen und
wenn ja wie sieht sowas aus.
Es Wäre nähmlich schön Wenn der c-Interpreter nicht für jedes neue Com
object mit neuen Methoden versorgt werden muss. Läst sich das irgendwie
über einen Aufruf per name erledigen??
Sprich wie geht Invoke??

Bernhard Geyer 26. Aug 2005 15:50

Re: WAS ist COM??
 
Zitat:

Zitat von QuickAndDirty
Gibt es eine Möglichkeit die Methoden über invoke aufzurufen und
wenn ja wie sieht sowas aus.

Ja es geht. Aber wie.... Im COM-Buch von A. Kosch steht was drüber (habe ich gerade nicht zur hand) und Delphi macht es genauso wenn man mit OleVariants arbeitet

Zitat:

Zitat von QuickAndDirty
Sprich wie geht Invoke??

Ja. Grottenschlechte Performance und unter Win9x/ME sollte es nicht zu oft aufgerufen werden. Ich glaube nach ca. 65.000 Aufrufen gibts Probleme.

shmia 26. Aug 2005 17:39

Re: WAS ist COM??
 
Zitat:

Zitat von QuickAndDirty
Es Wäre nähmlich schön Wenn der c-Interpreter nicht für jedes neue Com
object mit neuen Methoden versorgt werden muss. Läst sich das irgendwie
über einen Aufruf per name erledigen??
Sprich wie geht Invoke??

Zumindest mit "einfachen" COM-Properties geht das.
In Unit AxCtrls gibt es:
Delphi-Quellcode:
procedure EnumDispatchProperties(Dispatch: IDispatch; PropType: TGUID; VTCode: Integer; PropList: TStrings);

function GetDispatchPropValue(Disp: IDispatch; DispID: Integer): OleVariant;
procedure SetDispatchPropValue(Disp: IDispatch; DispID: Integer; const Value: OleVariant);
Mit EnumDispatchProperties holst du dir zuerst eine Liste der Properties.
Die DispId kann man über Integer(Stringlist.Objects[]) abgreifen.
Und dann eben mit GetDispatchPropValue oder SetDispatchPropValue arbeiten.

Übrigens: Du schreibst "Makro Interpreter". Meinst du damit einen Interpreter, der Scripts in Pascal interpretiert ?
Ich frage nur, weil ich einfach VBScript oder JScript in meine Anwendung integriere. Damit ist die dynamische Anbindung von COM/DCOM-Objekten schon erledigt.

QuickAndDirty 29. Aug 2005 13:24

Re: WAS ist COM??
 
Delphi-Quellcode:
procedure EnumDispatchProperties(Dispatch: IDispatch; PropType: TGUID; VTCode: Integer; PropList: TStrings);

function GetDispatchPropValue(Disp: IDispatch; DispID: Integer): OleVariant;
procedure SetDispatchPropValue(Disp: IDispatch; DispID: Integer; const Value: OleVariant);
Kannst du mir ein Beispiel Basteln. Ich kann mir nicht unter VT-Code vorstellen.
Auf ähnliche weise mache ich es mit Perl für ActiveDirectory oder WEBEM nur
in Delphi hab ich irgend wie keinen Plan wie das läuft.



Wir der Anwendung ist ein eigener C interpreter eingebaut der ähnlich wie JAVA aus dem
C-Code einen Objekt code Kompiliert und diesen dann an verschiedenen Makroausprüngen in
der Anwendung interpretiert. Diese Makros sind verdammt schnell und der Interpreter ist in Pascal geschrieben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:09 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