How to call a COM-Method with a BSTR-parameter?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

How to call a COM-Method with a BSTR-parameter?

Mülheims, Klaus-2
Hello,

I have a COM-method with this definition:

HRESULT _stdcall GetVersionInfo(
                [out] BSTR* ClientVersion,
                [out] BSTR* ServerVersion)

How do I coll it from VisualWorks 7.5?

I thought, the following would be correct:

result1 := BSTR resultValueBuffer.
result2 := BSTR resultValueBuffer.
<aComDriverForTheObject> invokeMethod:#GetVersionInfo with: result1 asPointerParameter with: result2 asPointerParameter.

string1 := result1 contents.
string2 := result2 contents.

But it doesn't work. I get the error "Illegal assignment" from the smalltalk COM-system.
Can anyone help me?

Greetings

Klaus

Collogia AG
Ubierring 11
 
50678 Köln
Germany
+49 221 336080
http://www.collogia.de


Diese Nachricht ist vertraulich. Wenn Sie nicht der beabsichtigte Empfänger sind, informieren Sie bitte den Absender. Das unbefugte Kopieren oder Weiterleiten ist nicht gestattet. Wegen der Manipulierbarkeit von E-Mails übernehmen wir keine Haftung für den Inhalt.




PENSIONS-SICHERUNGS-VEREIN, Versicherungsverein auf Gegenseitigkeit
Vorsitzender des Aufsichtsrats: Dr. Dieter Hundt ∙ Vorstand: Martin Hoppenrath (Vors.), Dr. Hermann Peter Wohlleben
Registergericht: AG Köln Nr. HRB 6821 ∙ Sitz: Köln





_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: How to call a COM-Method with a BSTR-parameter?

Thomas Brodt
Hi Klaus

You should be able to just call it with two strings, or as 'this is a
string' copyToHeap, as BSTR is a simple char * in the end. (Maybe
encoding will be an issue, I currently don't know).

resultValueBuffers are used for return values or if arguments are used
as [in, out] parameters, when you need to get modified values back. But
your arguments are [out] only, so no need for that.

HTH

Thomas


Am 25.02.2010 18:04, schrieb Mülheims, Klaus:

> Hello,
>
> I have a COM-method with this definition:
>
> HRESULT _stdcall GetVersionInfo(
>                  [out] BSTR* ClientVersion,
>                  [out] BSTR* ServerVersion)
>
> How do I coll it from VisualWorks 7.5?
>
> I thought, the following would be correct:
>
> result1 := BSTR resultValueBuffer.
> result2 := BSTR resultValueBuffer.
> <aComDriverForTheObject>  invokeMethod:#GetVersionInfo with: result1 asPointerParameter with: result2 asPointerParameter.
>
> string1 := result1 contents.
> string2 := result2 contents.
>
> But it doesn't work. I get the error "Illegal assignment" from the smalltalk COM-system.
> Can anyone help me?
>
> Greetings
>
> Klaus
>
> Collogia AG
> Ubierring 11
>
> 50678 Köln
> Germany
> +49 221 336080
> http://www.collogia.de
>
>
> Diese Nachricht ist vertraulich. Wenn Sie nicht der beabsichtigte Empfänger sind, informieren Sie bitte den Absender. Das unbefugte Kopieren oder Weiterleiten ist nicht gestattet. Wegen der Manipulierbarkeit von E-Mails übernehmen wir keine Haftung für den Inhalt.
>
>
>
>
> PENSIONS-SICHERUNGS-VEREIN, Versicherungsverein auf Gegenseitigkeit
> Vorsitzender des Aufsichtsrats: Dr. Dieter Hundt ∙ Vorstand: Martin Hoppenrath (Vors.), Dr. Hermann Peter Wohlleben
> Registergericht: AG Köln Nr. HRB 6821 ∙ Sitz: Köln
>
>
>
>
>
> _______________________________________________
> vwnc mailing list
> [hidden email]
> http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
>    
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc