COM Datentypen und VB6

16/12/2007 - 14:07 von Frank Heindörfer | Report spam
Hallo,

da ich in der c# Newsgruppe keine Antwort bekommen habe, versuche ich
hier mein Glück.

Ich entwickle gerade eine .Net DLL die auch einige Funktionen als
COM-Schnittstelle zur Verfügung stellen soll. Hauptsàchlich sollen VB6,
VBS und VBA darauf zugreifen. Bis jetzt funktioniert auch alles.

Jetzt habe ich mit der folgenden Funktion ein Problem:

public void DoIt(string[] sourceFilenames, string destinationFilename)

Die DLL wird kompiliert. Versuche ich diese aber von VB6 aus zu nutzen,
geht weder Intellisense noch die manuelle Parameterübergabe.

Ich erhalte beim Ausführen in VB6 den Fehler:

Fehler beim Kompilieren:

Funktion oder Schnittstelle kann nur eingeschrànkt genutzt werden oder
verwendet einen Typ der Automatisierung, der von Visual Basic nicht
unterstützt wird.

Wie mache ich es richtig? Welche Parametertypen sind erlaubt? Wie
übergibt man eine große Anzahl unterschiedlicher Parameter?

Tschüss Frank
 

Lesen sie die antworten

#1 Peter Fleischer
16/12/2007 - 15:32 | Warnen spam
"Frank Heindörfer" schrieb im
Newsbeitrag news:%23kacKS%
Hallo,

da ich in der c# Newsgruppe keine Antwort bekommen habe, versuche ich hier
mein Glück.

Ich entwickle gerade eine .Net DLL die auch einige Funktionen als
COM-Schnittstelle zur Verfügung stellen soll. Hauptsàchlich sollen VB6,
VBS und VBA darauf zugreifen. Bis jetzt funktioniert auch alles.

Jetzt habe ich mit der folgenden Funktion ein Problem:

public void DoIt(string[] sourceFilenames, string destinationFilename)

Die DLL wird kompiliert. Versuche ich diese aber von VB6 aus zu nutzen,
geht weder Intellisense noch die manuelle Parameterübergabe.

Ich erhalte beim Ausführen in VB6 den Fehler:

Fehler beim Kompilieren:

Funktion oder Schnittstelle kann nur eingeschrànkt genutzt werden oder
verwendet einen Typ der Automatisierung, der von Visual Basic nicht
unterstützt wird.

Wie mache ich es richtig? Welche Parametertypen sind erlaubt? Wie übergibt
man eine große Anzahl unterschiedlicher Parameter?



Hi Frank,
villeicht hilft dir das:

Use blittable data types. A blittable data type has the same representation
in .NET
Framework applications and COM applications. Examples of blittable types
include
integers, floating-point types, and arrays of integers or floating-point
types. When
you pass a blittable value from a .NET Framework application to a COM
object, the
value is passed across the interop boundary without modification.

A non-blittable data type has a different representation in .NET Framework
applications and COM applications. Examples of non-blittable types include
strings,
dates, and user-defined objects. When you pass a non-blittable value from a
.NET
Framework application to a COM object, the COM interop marshaling service
must
convert the managed data type into a COM-compatible type. There is a
run-time
overhead associated with this conversion.

Peter

Ähnliche fragen