[Решено] Laz1.6.0 - глюки с Юникодом в Win10

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Re: [Решено] Laz1.6.0 - глюки с Юникодом в Win10

Сообщение alexs » 05.08.2016 10:00:24

Посмотри функцию StrToStrings из модуля rxstrutils
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4053
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: [Решено] Laz1.6.0 - глюки с Юникодом в Win10

Сообщение Cheb » 17.10.2016 09:33:57

Как дети малые.
А если имя пользователя содержит ероглифы китайские, или продвинутые символы прикольного смайлика? И вы - в луже.

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!
Аватара пользователя
Cheb
энтузиаст
 
Сообщения: 994
Зарегистрирован: 06.06.2005 15:54:34

Пред.

Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18

Рейтинг@Mail.ru