[Решено] Laz1.6.0 - глюки с Юникодом в Win10
Модератор: Модераторы
Как дети малые.
А если имя пользователя содержит ероглифы китайские, или продвинутые символы прикольного смайлика? И вы - в луже.
1. Выковыриваете из RTL имплементацию GetWindowsSpecialDir (посмотрите, какая она большая! Целых десять строк!)
(эта проверка на NIL, кстати - отрыжка совместимости с Windows 98 без обновления Internet Explorer 5)
2. Переделываете на использование SHGetFolderPathW & UnicodeChar
3. Или приучаете себя работать напрямую с WinAPI, без использования замшелых обёрток
4. PROFIT!
А если имя пользователя содержит ероглифы китайские, или продвинутые символы прикольного смайлика? И вы - в луже.
1. Выковыриваете из RTL имплементацию GetWindowsSpecialDir (посмотрите, какая она большая! Целых десять строк!)
Код: Выделить всё
Function GetWindowsSpecialDir(ID : Integer) : String;
Var
APath : Array[0..MAX_PATH] of char;
begin
Result:='';
if (CFGDLLHandle=0) then
InitDLL;
If (SHGetFolderPath<>Nil) then
begin
if SHGetFolderPath(0,ID or CSIDL_FLAG_CREATE,0,0,@APATH[0])=S_OK then
Result:=IncludeTrailingPathDelimiter(StrPas(@APath[0]));
end;
end;(эта проверка на NIL, кстати - отрыжка совместимости с Windows 98 без обновления Internet Explorer 5)
2. Переделываете на использование SHGetFolderPathW & UnicodeChar
3. Или приучаете себя работать напрямую с WinAPI, без использования замшелых обёрток
4. PROFIT!
