LPOLESTR* to string

John Colvin john.loughran.colvin at gmail.com
Mon Feb 10 09:29:32 PST 2014


On Monday, 10 February 2014 at 17:08:27 UTC, Andre wrote:
> Am 10.02.2014 17:53, schrieb Mike Parker:
>> On 2/11/2014 1:32 AM, Andre wrote:
>>> Hi,
>>>
>>> one hour trying to get a string out of LPOLESTR*.
>>> What is the correct command to get rgszNames as string?
>>>
>>> HRESULT GetIDsOfNames(REFIID riid, LPOLESTR* rgszNames, UINT 
>>> cNames,
>>> LCID lcid, DISPID* rgDispId){}
>>>
>>> With following command I only get the first character
>>> writeln(to!string(**rgszNames));
>>>
>>> Kind regards
>>> André
>>
>> I would assume to!string(*rgszNames). Assuming LPOLESTR is 
>> char* or some
>> such, then LPOLESTR** is char**, so **LPOLESTR would be the 
>> first
>> character in the string, and *LPOLESTR would be the char* 
>> string.
>
>
> to!string(*rgszNames) outputs a number instead of a name.
> I think I am a step further, rgszNames is an array but also 
> with to!string(*rgszNames[0]) only the first character of my 
> method is given back.
>
> Kind regards
> André

std.conv.to knows about char* c-style strings, but not wchar* 
c-style strings like LPOLESTR. The number you are getting is the 
pointer to the first wchar.

I'm not sure what is the best way to do this as it's not 
something I've come across before, hopefully someone else will 
know.


More information about the Digitalmars-d-learn mailing list