Конференция "FreePascal" » Сборка не юникодной-версии Lazarus'ом [Win32]
 
  • swerg (14.01.13 14:22) [0]
    Выяснил неожиданную для меня вещь: Lazarus подразумевает, что все строковые значения для выдачи в интерфейс Windows в нем будут заданы в кодировке UTF-8.

    Вопрос: есть ли возможность собрать проект так, чтобы строки обрабатывались в кодировке Ansi, без юникода?

    В исходниках Lazarus вижу, что перед вызовом всех WinAPI-функций стоит преобразование UTF-8 --> Unicode, после чего вызываются функции с суффиксом W, однако есть и вариант кода, когда вызываютяс "нормальные" не юникодные функции WinAPI. Управляется дерективой компилятора ... ээээ... ну в общем какой-то, забыл, сорри.
    Но как собрать не-юникод вариант приложения - ума не приложу. В начало каждого модуля программы вставлял {$UNDEFINE эта_самая_константа}, но это не помогло, впрочем наверное понятно почему.
    Но как собрать так, чтобы все это задействовать - не знаю

    Подскажите, плиз. Вставлять в моей программе конвертацию ANSI-->UTF8  к сожалению не вариант, ну правда. Потому как я точно не знаю какая строка пойдет в интерфейс (и, соответственно ее надо конвертировать), а какая - будет просто использоваться внутри программы, значит конвертировать не нужно.
  • Thaddy © (14.01.13 19:17) [1]
    For Lazarus this is not a real option because the whole LCL is always UTF8.
    Fot Freepascal itself you can simply choose $MODE DELPHI or commandline -Mdelphi because the RTL and the FCL can be compiled for ANSI (and/or KOI) like that.

    For unicode - from FPC 2.7.1 - you can choose $MODE DELPHIUNICODE or -Mdelphiunicode, but that compiles to UTF16.

    But (visual parts) of Lazarus and the LCL are UTF8, always.
  • swerg (14.01.13 21:44) [2]
    Thaddy, понял, огромное спасибо.
    Ну раз always, значит придется с этим жить ...
 
Конференция "FreePascal" » Сборка не юникодной-версии Lazarus'ом [Win32]
Есть новые Нет новых   [118243   +31][b:0][p:0]