digitalmars.D.learn - LPOLESTR* to string
- Andre (9/9) Feb 10 2014 Hi,
- Mike Parker (4/13) Feb 10 2014 I would assume to!string(*rgszNames). Assuming LPOLESTR is char* or some...
- Andre (7/24) Feb 10 2014 to!string(*rgszNames) outputs a number instead of a name.
- John Colvin (7/36) Feb 10 2014 std.conv.to knows about char* c-style strings, but not wchar*
- John Colvin (2/41) Feb 10 2014 https://d.puremagic.com/issues/show_bug.cgi?id=8384
- John Colvin (8/47) Feb 10 2014 I'm pretty sure you can get a wstring like this:
- Andre (5/48) Feb 10 2014 Yes:) now it works.
- Jakob Ovrum (3/6) Feb 10 2014 to!string on a well-formed UTF-16 string is always safe. It will
- John Colvin (4/11) Feb 11 2014 Awesome. Sorry for the misinformation, I don't really know a lot
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é
Feb 10 2014
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.
Feb 10 2014
Am 10.02.2014 17:53, schrieb Mike Parker:On 2/11/2014 1:32 AM, Andre wrote: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é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.
Feb 10 2014
On Monday, 10 February 2014 at 17:08:27 UTC, Andre wrote:Am 10.02.2014 17:53, schrieb Mike Parker: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.On 2/11/2014 1:32 AM, Andre wrote: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é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.
Feb 10 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:https://d.puremagic.com/issues/show_bug.cgi?id=8384Am 10.02.2014 17:53, schrieb Mike Parker: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.On 2/11/2014 1:32 AM, Andre wrote: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é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.
Feb 10 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:I'm pretty sure you can get a wstring like this: import core.stdc.wchar_ : wcslen; auto rgszNamesWStr = to!wstring(rgszNames[0][0 .. wcslen(rgszNames[0])]); Or if you're sure you don't have any wide characters: auto rgszNamesStr = to!string(rgszNames[0][0 .. wcslen(rgszNames[0])]);Am 10.02.2014 17:53, schrieb Mike Parker: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.On 2/11/2014 1:32 AM, Andre wrote: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é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.
Feb 10 2014
Am 10.02.2014 18:54, schrieb John Colvin:On Monday, 10 February 2014 at 17:29:33 UTC, John Colvin wrote:Yes:) now it works. Thanks a lot. Kind regards AndréOn Monday, 10 February 2014 at 17:08:27 UTC, Andre wrote:I'm pretty sure you can get a wstring like this: import core.stdc.wchar_ : wcslen; auto rgszNamesWStr = to!wstring(rgszNames[0][0 .. wcslen(rgszNames[0])]); Or if you're sure you don't have any wide characters: auto rgszNamesStr = to!string(rgszNames[0][0 .. wcslen(rgszNames[0])]);Am 10.02.2014 17:53, schrieb Mike Parker: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.On 2/11/2014 1:32 AM, Andre wrote: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é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.
Feb 10 2014
On Monday, 10 February 2014 at 17:54:14 UTC, John Colvin wrote:Or if you're sure you don't have any wide characters: auto rgszNamesStr = to!string(rgszNames[0][0 .. wcslen(rgszNames[0])]);to!string on a well-formed UTF-16 string is always safe. It will transcode to UTF-8.
Feb 10 2014
On Monday, 10 February 2014 at 22:06:14 UTC, Jakob Ovrum wrote:On Monday, 10 February 2014 at 17:54:14 UTC, John Colvin wrote:Awesome. Sorry for the misinformation, I don't really know a lot about phobos w.r.t. unicode. There was some talk of an article on it by someone, but I don't remember seeing it happen.Or if you're sure you don't have any wide characters: auto rgszNamesStr = to!string(rgszNames[0][0 .. wcslen(rgszNames[0])]);to!string on a well-formed UTF-16 string is always safe. It will transcode to UTF-8.
Feb 11 2014