-
Выяснил неожиданную для меня вещь: Lazarus подразумевает, что все строковые значения для выдачи в интерфейс Windows в нем будут заданы в кодировке UTF-8.
Вопрос: есть ли возможность собрать проект так, чтобы строки обрабатывались в кодировке Ansi, без юникода?
В исходниках Lazarus вижу, что перед вызовом всех WinAPI-функций стоит преобразование UTF-8 --> Unicode, после чего вызываются функции с суффиксом W, однако есть и вариант кода, когда вызываютяс "нормальные" не юникодные функции WinAPI. Управляется дерективой компилятора ... ээээ... ну в общем какой-то, забыл, сорри. Но как собрать не-юникод вариант приложения - ума не приложу. В начало каждого модуля программы вставлял {$UNDEFINE эта_самая_константа}, но это не помогло, впрочем наверное понятно почему. Но как собрать так, чтобы все это задействовать - не знаю
Подскажите, плиз. Вставлять в моей программе конвертацию ANSI-->UTF8 к сожалению не вариант, ну правда. Потому как я точно не знаю какая строка пойдет в интерфейс (и, соответственно ее надо конвертировать), а какая - будет просто использоваться внутри программы, значит конвертировать не нужно.
-
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.
-
Thaddy, понял, огромное спасибо. Ну раз always, значит придется с этим жить ...
|