title: SetLocaleInfo fails
body: <p>I have function </p>
  
  <pre><code>procedure bgGetKeyboardLayoutList(List: TStrings);
  var
    AList : array [0..50] of Hkl;
    AklName: array [0..255] of Char;
    i: Longint;
  begin
    List.Clear;
    for i := 0 to GetKeyboardLayoutList(SizeOf(AList), AList) - 1 do
      begin
        GetLocaleInfo(LoWord(AList[i]), LOCALE_SLANGUAGE, AklName, SizeOf(
                 AklName));
        List.AddObject(AklName, Pointer(AList[i]));
      end;
  end;
  </code></pre>
  
  <p>The function is called</p>
  
  <pre><code>procedure TDefaultInputMethod.Scan;
  begin
    bgGetKeyboardLayoutList(FSL);
  end;
  </code></pre>
  
  <p>But when I try in opposite direction to use SetLocaleInfo, I have no success
  code:</p>
  
  <pre><code>procedure TDefaultInputMethod.SetAsDefault(index: integer);
  begin
    ActivateKeyboardLayout(Hkl(FSL.Objects[index]), 0); //this line works
    if SetLocaleInfo(LoWord(FSL.Objects[index]), LOCALE_SLANGUAGE, PChar(FSL[index]))  then
       ShowMessage('Uspeh')
    else
      begin
        ShowMessage(IntToStr(GetLastError));
      end;
  end;
  </code></pre>
  
  <p>GetLasrError returns 1004</p>
  
  <p>Thanks in advance
  Bojan</p>