core.exception.UnicodeException at src\rt\util\utf.d(400): illegal UTF-16 value
    Ali Çehreli via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Mon Sep 15 16:57:59 PDT 2014
    
    
  
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
    
    
More information about the Digitalmars-d-learn
mailing list