COM Dll und Parameterübergabe

08/01/2009 - 12:43 von Frank Heindörfer | Report spam
Hallo,

ich habe mit VS2005 eine DLL erstellt und für COM sichtbar gemacht,
damit ich per VBScript des WSH auf Funktionen der DLL zugreifen kann.
Das funktioniert soweit auch ganz gut. Nur mit einer Funktion habe ich
Probleme wie ich dort die Parameter richtig übergeben soll.

Die Funktion lautet beispielhaft:
string ConvertFiles(ref string[] sourceFilenames, string
destinationFilename);

Es soll also an die Funktion einmal ein Feld von Strings (ref string[]
sourceFilenames) und dann noch ein einzelner String (string
destinationFilename) übergeben werden.

Ich weiß jetzt nicht wie ich von VBScript aus ein solches String-Feld
übergeben kann.

Verwende ich z.B.:
Msgbox test.ConvertFiles(files, fileres)
erhalte ich
Ungültiger Prozeduraufruf oder ungültiges Argument

Verwende ich dagegen:
Msgbox test.ConvertFiles((files), fileres)
erhalte ich
Typen unvertràglich: 'ConvertFiles'

Die Parameter wurden vorher so initialisiert:
Dim files(), fileres
redim files(1)
Set test = Wscript.CreateObject("testdll.test1")
fileres = "1"
files(0) = "0"
files(1) = "1"


Kann mir jemand sagen wie man es richtig macht? Oder wie könnte ich am
besten ein String-Feld an eine Funktion meiner DLL von VBScript aus
übergeben?

Vielen Dank schon mal im voraus.

Tschüss Frank
 

Lesen sie die antworten

#1 Günter Prossliner
08/01/2009 - 12:50 | Warnen spam
Hallo Frank!

ich habe mit VS2005 eine DLL erstellt und für COM sichtbar gemacht,
damit ich per VBScript des WSH auf Funktionen der DLL zugreifen kann.
Das funktioniert soweit auch ganz gut. Nur mit einer Funktion habe ich
Probleme wie ich dort die Parameter richtig übergeben soll.

Die Funktion lautet beispielhaft:
string ConvertFiles(ref string[] sourceFilenames, string
destinationFilename);

Es soll also an die Funktion einmal ein Feld von Strings (ref string[]
sourceFilenames) und dann noch ein einzelner String (string
destinationFilename) übergeben werden.

Ich weiß jetzt nicht wie ich von VBScript aus ein solches String-Feld
übergeben kann.



Interessant wàre natürlich die IDL, bzw. die COM-Export spezifischen
Attributierungen (hast Du welche gesetzt) auf der Klasse bzw. der Methode.

Was mir als erstes auffàllt ist allerdings die "ref" Deklaration. Ist diese
denn nötig?

Der WSH wird das Array ohnehin nicht àndern können, also würde ich das mal
versuchshalber entfernen. Kann gut sein, dass es dann geht (Arrays ansich
sich nàmlich kein Problem).


mfg GP

Ähnliche fragen