core.exception.UnicodeException at src\rt\util\utf.d(400): illegal UTF-16 value
AsmMan via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Sep 15 17:03:54 PDT 2014
On Monday, 15 September 2014 at 23:57:59 UTC, Ali Çehreli wrote:
> On 09/15/2014 04:36 PM, notna wrote:
>
> > WCHAR lpwszUsername[254];
> > debug writefln("lpwszUsername.sizeof is %s,
> WCHAR.sizeof is
> > %s", lpwszUsername.sizeof, WCHAR.sizeof);
> > // DWORD dUsername2 = lpwszUsername.sizeof /
> WCHAR.sizeof;
> > DWORD dUsername2 = 254;
> > GetUserNameW(lpwszUsername.ptr, &dUsername2);
>
> You must make use of the returned value to slice your wstring.
> Something like this (not compiled):
>
> auto actualLength = GetUserNameW(lpwszUsername.ptr,
> &dUsername2);
> auto userName = lpwszUsername[0..actualLength];
>
> Otherwise, D knows that lpwszUsername is a 254-char string and
> will try to print all of it.
>
> Ali
GetUserNameW() return a zero on error and non-zero on success.
The actual number of bytes copied into lpwszUsernam is in
dUsername2.
auto userName = lpwszUsername[0..dUsername2];
More information about the Digitalmars-d-learn
mailing list