ein gedachtes kleines Problem mit COM&Xbase erweist sich als sehr hartnäckig. Da die ganze COM-Thematik für mich noch ein Buch mit 7 Siegeln ist, in dem ich gerade das Inhaltverzeichnis+Vorwort gelesen habe, hoffe ich, das mir jemand weiterhelfen kann.
Aus einer Anwendung heraus (Xbase 1.9 SL1, Hotfixes bis 42), steuere ich das CAD Programm SolidWorks 2011 fern. Dort habe ich Zugriff auf eine Klasse "CustomPropertyManager" die Feld-/Wertpaare verwaltet die ich auslesen möchte.
Die VB Deklaration der Methode in der API HIlfe ist:
Code: Alles auswählen
Sub Get2( _
ByVal FieldName As String, _
ByRef ValOut As String, _
ByRef ReesolvedValOut As String _
)
In Xbase bekomme ich die Abfrage leider nicht hin.
Code: Alles auswählen
LOCAL cTemp1 := "", cTemp2 := ""
// Hier gibt es einen crash
// => Typkonflikt. Parameter hat falschen Typ. [Automation / 6500]
oProManager:get2("Author", @cTemp1, @cTemp2)
// Genauso
oProManager:get2("Author", cTemp1, cTemp2)
Code: Alles auswählen
LOCAL oTemp1 := VTType():new("", VT_BSTR+VT_BYREF), oTemp2 := VTType():new("", VT_BSTR+VT_BYREF)
oProManager:get2("Author", cTemp1, cTemp2)
Wie komme ich an die Werte? Übersehe ich das offensichtliche? Ein Blick in die Doku zu "callMethod" und der automatischen Typ Konvertierung hat mir auch nicht weitergeholfen.
Gruß,
Lars