AGB  ·  Datenschutz  ·  Impressum  







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

COM-Object mit Events

Ein Thema von markus.waibel · begonnen am 8. Aug 2007 · letzter Beitrag vom 10. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
markus.waibel

Registriert seit: 15. Mär 2006
11 Beiträge
 
Delphi 7 Architect
 
#1

COM-Object mit Events

  Alt 8. Aug 2007, 10:24
[delphi]Ich sollte ein COM-Objekt einbinden und auf dessen Events reagieren.
Ich kann zwar auf die Properties und Methoden zugreifen, die Events sind jedoch nicht vorhanden.
In einem VB-Beispiel wird die Klasse mit "Private WithEvents m_objAPI As API" instanziert. Was ich jetzt brauche ist der passende Delphi-Befehl zu der "WithEvents"-Anweisung.

Hat da jemand eine Idee?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: COM-Object mit Events

  Alt 8. Aug 2007, 11:05
Importier dir doch die Typlibrary und lass dir von Delphi ein paasendes VCL-Objekt mit passend verknüpfter Eventschnittstelle erstellen.

Falls aufgrund von "komischer" Eventschnittstelle nicht klappt probier mal EventSinkImp aus.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
markus.waibel

Registriert seit: 15. Mär 2006
11 Beiträge
 
Delphi 7 Architect
 
#3

Re: COM-Object mit Events

  Alt 8. Aug 2007, 11:25
Hallo Bernhard,

klappt leider beides nicht. Delphi erstellt die Events in einem dispinterface(was auch immer das bedeutet.

Das Programm sventsinkimp meldet "Unable to import type library file:...."

Was nu?????

Danke für deine Antwort

Markus
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: COM-Object mit Events

  Alt 8. Aug 2007, 12:24
Zitat von markus.waibel:
Das Programm sventsinkimp meldet "Unable to import type library file:...."
Dann beinhaltet die ausgewählte Datei keine TLB bzw. ist für Delphi nicht lesbar.

Um was für ein COM-Objekt geht es denn?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: COM-Object mit Events

  Alt 8. Aug 2007, 12:30
@markus.waibel: kannst du deine Delphi Version in deinen persönlichen Einstellungen hinterlegen ?
Von der Version hängt auch ab, wie gut Delphi mit TLBs und COM-Objekten umgehen kann.
Unterhalb von Delphi 5 ist diese Unterstützung noch relativ unzureichend.
Andreas
  Mit Zitat antworten Zitat
markus.waibel

Registriert seit: 15. Mär 2006
11 Beiträge
 
Delphi 7 Architect
 
#6

Re: COM-Object mit Events

  Alt 8. Aug 2007, 12:34
@SHMIA: Da komm ich jetzt nicht ganz mit. Vermute du sprichst das Tool EventSinkGenerator an. bei Optionen kann ich da jedoch nichts einstellen was die Delphi-Version betrifft. Ich verwende Delphi7.
Gruß Markus
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: COM-Object mit Events

  Alt 8. Aug 2007, 12:43
Zitat von markus.waibel:
@SHMIA: Da komm ich jetzt nicht ganz mit. Vermute du sprichst das Tool EventSinkGenerator an. bei Optionen kann ich da jedoch nichts einstellen was die Delphi-Version betrifft. Ich verwende Delphi7.
Gruß Markus
Er meint dein Delphi-PRAXIS User-Profil Da kann man eintragen, welche Delphi Version man verwendet.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
markus.waibel

Registriert seit: 15. Mär 2006
11 Beiträge
 
Delphi 7 Architect
 
#8

Re: COM-Object mit Events

  Alt 8. Aug 2007, 12:51
OK Jetzt hab ich's.
Mein Profil habe ich eben aktualisiert.
  Mit Zitat antworten Zitat
markus.waibel

Registriert seit: 15. Mär 2006
11 Beiträge
 
Delphi 7 Architect
 
#9

Re: COM-Object mit Events

  Alt 8. Aug 2007, 20:32
Ich hab jetzt mal nachgelesen und begonnen meinen eigenen EventSink zu entwickeln.
Im Moment scheitere ich daran den Events die Parameter zu übergeben. Ich habe mich an ein Beispiel von Codegear gealten. Dabei wird ein kleines Testprogramm (Client und Server) erstellt, welches ein Event vom Server im Client abhandelt. Dieses Event hat jedoch keine Übergabeparameter. Mein Event übergibt zwei Parameter. Wie bekomme ich jetzt die Parameter des Events des Servers in der Invoke-Prozedur als Parameter für meine Client-Prozedur?????

(Ich hoffe das war jetzt nicht zu kompliziert...)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: COM-Object mit Events

  Alt 9. Aug 2007, 12:30
Kannst du TLB mal hochladen und dazu angeben, um welches Event-Interface es sich handelt ?
Man kann die TLB wie folgt extrahieren:
Im Delphi Menue: Datei -> Öffnen
Dateityp auf "Typbibliothek" umstellen.
EXE, DLL oder OCX-Datei laden. (kann sehr laaaange dauern)
Datei -> Speichern unter (Dateiendung auf .TLB ändern)

Als Hintergrund:
um ein COM-Event zu empfangen, benötigt man entweder
a.) ein passendes IDispatch-Interface oder
b.) ein Interface, dass von der Server-TLB vorgegeben wird. (frühe Bindung)
Delphi kann nur mit dem Fall a.) umgehen; mit Fall b.) kommt Delphi (aber auch VB-Script, Java-Script) nicht klar.
Beim Fall a.) gibt es noch zwei Varianten:
1.) entweder der Server ruft zuerst die function GetIDsOfNames auf, und danach Invoke
2.) der Server ruft direkt Invoke auf weil ihm die DispIds schon von der TLB bekannst sind.
Wenn der Server nach Fall 1.) agiert (ist aber eher selten), dann hat Delphi ein Problem:
Delphi-Quellcode:
function TEventDispatch.GetIDsOfNames(const IID: TGUID; Names: Pointer;
  NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
  Result := E_NOTIMPL; // nicht implementiert, blöd
end;
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:37 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