AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ActiveX Server CallBack Methode zuweisen!!!
Thema durchsuchen
Ansicht
Themen-Optionen

ActiveX Server CallBack Methode zuweisen!!!

Ein Thema von Graf_Gustav · begonnen am 26. Mär 2006 · letzter Beitrag vom 29. Mär 2006
Antwort Antwort
Graf_Gustav

Registriert seit: 26. Mär 2006
3 Beiträge
 
Delphi 7 Enterprise
 
#1

ActiveX Server CallBack Methode zuweisen!!!

  Alt 26. Mär 2006, 20:00
Hallo

für mein aktuelles Projekt verwende ich eine ActiveX Komponente. Die Typenbibliothek habe ich importiert.
Die erzeugte Komponente funktioniert gut.
Nun muss ich jedoch auf Events reagieren. Bei meinen Nachforschungen bin ich auf die untenstehende Procedure gestoßen.
Wenn ich es richtig interpretiere, benötigt der ActiveX Server eine Information über eine Callback-Routine.
Leider schaffe ich es nicht, eine Methode (Procedure, Funktion) der varCallBack Variable zuzuweisen.
Wie kann ich einem OLEVariant, eine Methode zuweisen?
Oder ist das sogar der falsche Weg?

Delphi-Quellcode:
procedure TAuthentic.attachCallBack(const bstrName: WideString; varCallBack: OleVariant);
begin
  DefaultInterface.attachCallBack(bstrName, varCallBack);
end;
Ich programmiere mit Delphi 7 Enterprise.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: ActiveX Server CallBack Methode zuweisen!!!

  Alt 27. Mär 2006, 04:57
OleVaraiant ist im Prinzip wie Variant. Es kann alles aufnehmen. In diesem Fall ein Pointer, da ein Callback ein Zeiger auf eie Funktion ist.
  Mit Zitat antworten Zitat
Graf_Gustav

Registriert seit: 26. Mär 2006
3 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: ActiveX Server CallBack Methode zuweisen!!!

  Alt 28. Mär 2006, 07:12
Vermutlich bin ich einfach zu bl.. um einen Methodenzeiger einer Variable vom Typ OLEVariant
zuweisen. Ich kann eine Zuweisung über eine integer Typkonvertierung erreichen.
Allerdings schmiert mir dann das Programm ab. Vermutlich muß ich mir doch das ganze Thema
Server-Callbacks und Connection Points reinziehen!
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: ActiveX Server CallBack Methode zuweisen!!!

  Alt 28. Mär 2006, 07:45
Eine Methode wird nicht gehen. Warum wohl habe ich Funktion geschrieben?
Es sollte auch stdcall als Calling convention benutzt werden.
  Mit Zitat antworten Zitat
Graf_Gustav

Registriert seit: 26. Mär 2006
3 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: ActiveX Server CallBack Methode zuweisen!!!

  Alt 29. Mär 2006, 14:44
Vielen Dank für die Antwort,

das mit der Funktion ist mir schon klar. Ich habe mich nicht genau genug und präzise ausgedrückt .
In den folgenden Zeilen ist der Aufruf der attachCallBack Routine in JavaScript dargestellt.

Code:
JavaScript example:

objPlugIn.attachCallBack("ondragover",OnDragOver);

function OnDragOver()
{
// Hier der Code
}
Die Function OnDragOver hat keinen Rückgabewert. Eine Funktion in Delphi hat meines Wissens immer einen Rückgabewert.
Eine Funktion kann man einer OLEVariant Variable zuordnen. Bei einer Procedur ist mir das noch nicht gelungen.

Der folgende Delphi Code führt zu einem Fehler --Falscher Parameter--.
Ich habe außer word auch andere Typen versucht. Kein Erfolg

Delphi-Quellcode:
function test():word; stdcall
begin
  form1.label1.caption := 'test';
end;


procedure TForm1.Button3Click(Sender: TObject);
var varCallBack : OLEvariant;
     F: function():word; stdcall;

begin
  F := test;
  varCallBack := F;
  self.Authentic1.attachCallBack('ondragover', F);
end;
Es stellen sich mir zwei Fragen.
1. gibt es eine funktion die vergleichbar der javaScript Funktion ist?
2. Wie kann ich eine Procedure einer OLEVariant Variable zuordnen?
3. Bin ich total auf dem Holzweg??

Nochmals Danke für die Hilfe!!
  Mit Zitat antworten Zitat
shmia

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

Re: ActiveX Server CallBack Methode zuweisen!!!

  Alt 29. Mär 2006, 18:36
Ein OleVariant kann insbesondere eine Dispatch-Schnittstelle aufnehmen.
Du müsstest also ein Objekt mit einer Dipatch-Schnittstelle erzeugen und TAuthentic.attachCallBack zum Frass vorsetzen.
Das TAuuthic-Objekt wird nun wahrscheinlich das übergebene Dispatch-Interface nehmen und über Invoke eine Methode mit dem Name "bstrName" aufrufen.

Dies ist eine sehr seltsame Art (da nicht Microsaft Standard) ein Callback aufzurufen.
Aber für Anwendung in Scriptsprachen mag dies OK sein.
Andreas
  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 23:47 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