LPOLESTR* to string
John Colvin
john.loughran.colvin at gmail.com
Mon Feb 10 09:45:22 PST 2014
On Monday, 10 February 2014 at 17:29:33 UTC, John Colvin wrote:
> 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.
https://d.puremagic.com/issues/show_bug.cgi?id=8384
More information about the Digitalmars-d-learn
mailing list