Byref vs. Byval

03/05/2011 - 10:26 von Hermie | Report spam
Hallo!

Ich muss eine externe dll ansprechen, z. B. so:

Public Declare Function TuWas Lib "EineDLL" (ByVal nOptions As
ToolOptions) As Boolean

Nun möchte ich diese Funktion in eine ActiveXExe kapseln, also so:
Public Function MeineDLL_TuWas(...)

End Function

Und da kann ich einen benutzerdefinierten Typ ja nicht als ByVal übergeben.

Meine Frage wàre, ob es eine DLL überhaupt interessiert, ob der Wert
ByRef statt ByVal übergeben wird, wenn sie den Wert eh nicht àndert
(=ByVal).

Also ich wüsste gerne, ob ich das problemlos machen kann, oder ob das
Probleme geben kann.

Danke!

Hermann
 

Lesen sie die antworten

#1 Heinz-Mario Frühbeis
03/05/2011 - 11:11 | Warnen spam
Hermie beschrieb am 03.05.2011 :
Hallo!

Ich muss eine externe dll ansprechen, z. B. so:

Public Declare Function TuWas Lib "EineDLL" (ByVal nOptions As ToolOptions)
As Boolean

Nun möchte ich diese Funktion in eine ActiveXExe kapseln, also so:
Public Function MeineDLL_TuWas(...)

End Function

Und da kann ich einen benutzerdefinierten Typ ja nicht als ByVal übergeben.

Meine Frage wàre, ob es eine DLL überhaupt interessiert, ob der Wert ByRef
statt ByVal übergeben wird, wenn sie den Wert eh nicht àndert (=ByVal).



*MAN* ja klar!
Versuche mal einer DLL mit Sub Test(byRef Test As Long) den Aufruf
DLL.Test CInt(4) unterzujubeln.
Bei Objekten ist das ganz besonders wichtig!

Also ich wüsste gerne, ob ich das problemlos machen kann, oder ob das
Probleme geben kann.



Wenn du z. Bsp. ein Sub hast:
Test(byRef vTest As String) und in dieser Sub vTest ànderst (vTest =
vTest & "H"), dann ist org. vTest futsch.
Im Falle von "nur" lesen ist's natürlich schnuppe, ob byRef, oder byVal
(ausser, das du eben explizit auf die Deklaration achten musst) ...

Mit Gruß
Heinz-Mario Frühbeis

Ähnliche fragen