AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi OPC/OLE/COM Problem mit Aufruf von Funktionen
Thema durchsuchen
Ansicht
Themen-Optionen

OPC/OLE/COM Problem mit Aufruf von Funktionen

Ein Thema von andimx · begonnen am 17. Aug 2006 · letzter Beitrag vom 17. Aug 2006
Antwort Antwort
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#1

OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 01:21
Hallo,

Wieder was neues

Ich hab ein OPC Server entwickelt der jetzt sehr stabil läuft und keine Probleme mehr macht. Jetzt das Problem:

Der OPC Server ist ausgelagert und wird von einem Client angesteuert, der in einer DLL liegt. Die DLL exportiert eine Schreib- und Lesefunktion mit denen man Daten in den OPC schreiben/lesen kann.
Funktioniert auch alles bestens.. Aufruf Konvention beachtet, schreibe Daten rein und geht.

Jetzt kommt der Kluo!!!

Benutzt ich jetzt intern die Funktion zum schreiben, kommt ein EIntfCast Error - Schnittstelle wird nicht unterstützt.
Jetzt muss ich dazu sagen, das die Funktionen intern von einem Thread aufgerufen wird.

Nur wie kann es sein, das extern alles gut funktioniert und intern vom Thread aus die Funktion nicht erreichbar ist, bzw nicht richtig initialisert wird.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 11:13
Ich vermute mal das ich ein ähnliches Problem wie unter Aufruf eines OLE-Objektes aus einem Thread
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#3

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 11:55
Oh Gott!

Die Funktionen hab ich noch nie gehört. Muss ich den Server den initialiseren mit dem Objekt oder den Client?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 12:09
Immer wenn COM-Zeiger über Thread-Grenzen hinweg verwendet werden ist u.U. ein solches Marshaling nötig.

Wenn du sowas auf Client machst mußt du dies natürlich auf Clientseite marshallen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#5

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 17:36
Hmm.. hab jetzt mal rumgeschaut. SO richtig bekomm ich keine Info's wie man ein Objekt Marshalt.

Wie kann man sich das vorstellen, einfach einen Zeiger oder Classe übergeben?
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#6

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 17:55
Vielleicht hier nochmal eine genauerer Beschreibung:

Ich hab eine Basisklasse von der ich Ableite: TComInterface
Diese hat einige Standardfunktionen als "virtual; abstract" deklariert.

In einem z.B. TComInterfaceOPC = class(TComInterface) fülle ich die Funktionen aus.

In der Privat Sektion binde ich nun eine weitere Klasse ein, TrrOPCClient, die einen OPC Clienten auf COM Basis realsiert.

Ruf ich nun vom Hauptprogramm das die DLL geladen hat die Funktion TComInterfaceOPC.Write auf, dann ist alles gut, er schreibt die Daten in den OPC Namespace.
Ruf ich aber von einem WorkerThread in der DLL die Funktion TComInterfaceOPC.Write auf, dann gibts den Fehler (EIntfCastError).

Wo muss ich das Objekt den marschallen?
  Mit Zitat antworten Zitat
andimx

Registriert seit: 14. Apr 2005
Ort: Hohenstein-Ernstthal
67 Beiträge
 
#7

Re: OPC/OLE/COM Problem mit Aufruf von Funktionen

  Alt 17. Aug 2006, 18:30
Fehler gefunden:

CoInitializeEx(nil, COINIT_MULTITHREADED);

in Create vom Mainthread hat Abhilfe geschaffen ... tzz sowas blödes
  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 18:52 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