AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Problem mit COM Event Automation - EventSinkImp
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit COM Event Automation - EventSinkImp

Ein Thema von megaplage · begonnen am 27. Jan 2007 · letzter Beitrag vom 14. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#1

Problem mit COM Event Automation - EventSinkImp

  Alt 27. Jan 2007, 01:34
Hallo,

habe mich mehrere Tage durchs Netz gekämpft um einer COM-Library die Events zu entlocken - kein Erfolg ...

Es handelt sich um eine API von Cortal Consors um Banking-Aufgaben zu erledigen. Mittels EventSinkImp habe ich einen Event-Wrapper erzeugt aber die Ereignisse werden nicht durchgestellt. Auf herkömmlichem Wege mittels der dispinterfaces oder dualen Schnittstellen komme ich auch nicht weiter.
Mit C# ist es in 5 Zeilen erledigt, aber ich wollte gerne nur eine Anwendung und nicht alles aufteilen.

Vielleicht sieht einer von Euch besser durch und hat einen Tipp ?

Vielen Dank
Angehängte Dateien
Dateityp: zip tradingapi_390.zip (50,6 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#2

Re: Problem mit COM Event EventSinkImp

  Alt 27. Jan 2007, 01:50
hmm ..also ich habe schon öfters festgestellt das D2006 eine TLB besser importiert .. ich habe das mal für dich erledigt.

Teste es mal damit, wenn du etwas code zeigst könnten evtl andere noch helfen.
Angehängte Dateien
Dateityp: zip tradingapi_113.zip (26,5 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Problem mit COM Event EventSinkImp

  Alt 27. Jan 2007, 10:41
Vielen Dank, aber daran liegt es nicht. Habe D2005 verwendet.

Hier mal ein Beispiel meiner Versuche mit dem Ereignis SessionLogout

aus der TLB:

Delphi-Quellcode:
_CallbackSessionLogout = interface;
_CallbackSessionLogoutDisp = dispinterface;
ISessionLogoutSubscriptionCallbackEvents = dispinterface

  _CallbackSessionLogout = interface(IDispatch)
    ['{C5F3FBC2-5ACE-37C2-A400-B146B40B9656}']
  end;

  _CallbackSessionLogoutDisp = dispinterface
    ['{C5F3FBC2-5ACE-37C2-A400-B146B40B9656}']
  end;

  ISessionLogoutSubscriptionCallbackEvents = dispinterface
    ['{D99CA617-21FD-345D-9936-C23238B7AB4F}']
    procedure OnLogout; dispid 1610743808; !!! diese Zeile fehlt in der unit vom PASTLWTR : 1.2 ???
  end;

  _SessionLogoutSubscription = interface(IDispatch)
    ['{8B4C37BD-43ED-3215-8259-968FD8102B81}']
    function Get_ToString: WideString; safecall;
    function Equals(obj: OleVariant): WordBool; safecall;
    function GetHashCode: Integer; safecall;
    function GetType: _Type; safecall;
    procedure add_OnLogout(const value: _CallbackSessionLogout); safecall;
    procedure remove_OnLogout(const value: _CallbackSessionLogout); safecall;
    property ToString: WideString read Get_ToString;
  end;

  _SessionLogoutSubscriptionDisp = dispinterface
    ['{8B4C37BD-43ED-3215-8259-968FD8102B81}']
    property ToString: WideString readonly dispid 0;
    function Equals(obj: OleVariant): WordBool; dispid 1610743809;
    function GetHashCode: Integer; dispid 1610743810;
    function GetType: _Type; dispid 1610743811;
    procedure add_OnLogout(const value: _CallbackSessionLogout); dispid 1610743812;
    procedure remove_OnLogout(const value: _CallbackSessionLogout); dispid 1610743813;
  end;

  CoCallbackSessionLogout = class
    class function Create: _CallbackSessionLogout;
    class function CreateRemote(const MachineName: string): _CallbackSessionLogout;
  end;
1. Versuch : Verwendung der von EventSinkImp generierten Event-Wrapper

Er erzeugt eine Klasse TCC_APIISessionLogoutSubscriptionCallbackEvents, die habe ich so bemüht wie es in der Hilfe gesagt wird -> Interface wird connected aber wenn es zum Ereignis kommen soll keine Reaktion.

Delphi-Quellcode:
te:=session.GetSessionLogoutSubscription;
test:=TCC_APIISessionLogoutSubscriptionCallbackEvents.Create(self);
test.OnLogout:=oncclogout;
test.Connect(te);

2. Versuch : direkte Programmierung wie bei http://www.techvanguards.com/ beschrieben

Geht teilweise aber wenn es interessant wird können Klassen nicht gecastet werden oder Objekt nicht registriert und so Sachen

Ich vermute ja dass ich irgendwie die Methode add_OnLogout(const value: _CallbackSessionLogout); verwenden muss aber das endet mit besagten Fehlern

So, wenn jemand durch das Thema ist sollte er mit diesen Informationen zurechtkommen - lt. den Angaben diverser Delphi COM Seiten ?!
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 27. Jan 2007, 13:08
Kannst du mir mal noch die Deklaration von oncclogout zeigen ?

Evtl. liegt der fehler ja beim Callback.
  Mit Zitat antworten Zitat
megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 27. Jan 2007, 13:22
Hier ist sie...

Delphi-Quellcode:
procedure TfOTC.OnCCLogout(Sender: TObject);
begin
  windows.beep(100,500);
  application.title:='EXIT';
end;
Nur es kommt nicht mal zum Aufruf der Methoden des Event Wrappers, geschweige denn meines eigentlichen Handlers (Quellcodestück) - d.h. irgendetwas fehlt noch zwischen dem COM-Server und meinen Versuchen.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#6

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 28. Jan 2007, 11:59
Hi,

ich habe mir mal die Trading API geladen und installiert ... teste mal nen bisschen.

Gebe dir bescheid wenn ich weiter komme.
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#7

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 29. Jan 2007, 00:25
Hi,

also ich bekomme noch nicht einmal einen Login hin.
Funktioniert das bei dir ?
  Mit Zitat antworten Zitat
megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#8

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 29. Jan 2007, 23:23
Einfaches Testprogramm

Session erstellen (automatisch in Demo-Konto einloggen) :
Delphi-Quellcode:
  var session :SessionFacade;
    login :LoginSettings;

  coinitialize(nil);
  session:=CoSessionFacade.Create;
  login:=session.GetLoginSettings(0);
  login.setLoginData('555555555','12345','');
  session.AutoLoginWithAddOnName('Test',false,login);
dann kann man alles was das session-Objekt hergibt machen ... z.B.

if session.isLoggedIn ... dann z.B. das Event für Logout-Erkennung einrichten

Delphi-Quellcode:
  var ev : SessionLogoutSubscription;

  ev:=session.GetSessionLogoutSubscription;
oder für eine Push-Quote (Wertpapierkurs/Umsatz)

Delphi-Quellcode:
var qk :quoteKey;
    qs :quoteSubscription;

  qk:=session.CreateQuoteKey;
  qk.Set_SecurityCode('710000');
  qk.Set_StockexchangeId('ETR');
  qs:=session.GetQuoteSubscription(qk);
und diese Ereignisse dann zu empfangen ist mein Problem (ev oder qs bieten dann diese Add_OnXXX / Remove_OnXXX Methoden die wohl der Schlüssel dazu sind) ?!

Im Tray ist das API-Symbol da kann man über das Kontextmenü den Status verfolgen und z.B. sehen wie Quotenereignisse ankommen
  Mit Zitat antworten Zitat
Benutzerbild von TKC
TKC

Registriert seit: 21. Apr 2004
Ort: Tuningen
367 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 30. Jan 2007, 01:15
Also ich kann das nicht nachvollziehen ... sobald ich einen Loginversuch mache friert mein Testprogramm ein und das wars.

Habe es auch mit deiner API übersetzung probiert kein Erfolg.

Es könnte jetzt nur noch an der mscorlib_tlb.pas hängen.

Ich hänge dir mal mein Testprojekt an ... evtl kannst dus ja mal bei dir Testen ... bei mir bekomme ich den Login nicht hin.

greez ACE
Angehängte Dateien
Dateityp: rar cortatltest_494.rar (106,0 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat
megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Problem mit COM Event Automation - EventSinkImp

  Alt 30. Jan 2007, 12:09
Hm, das erzeugt bei mir Schutzverletzungen und endet mit dem IDE Totalabsturz...

Habe .NET 1.1 und die zugehörige API installiert und auch erfolgreich verwendet.
  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 04:53 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