Daemon, да помню, был такой прикол, даже вроде обычный caption у обычной компонентной формы так делался, ща времени пока нет, завтра гляну.
Скорее всего, это из за того что текст в исходниках хранится в UTF-8, его надо привести к системной кодировке(ANSI), заюзай Caption := Utf8ToAnsi('соум текст') или UtfToAnsi, точно не помню, должно помочь. Кстати, латиница должна отображаться без приведений)
Потому что ты похоже путаешь. WideChar или AnsiChar это всего лишь способ хранения данных, в WideChar данным отводится 2 байта(вроде), в AnsiChar - 1. Кодировка же это способ хранения символа и в отдельных реализациях на символ может приходится и 1 и 2 и 4 байта. То что ты используешь суффикс W ровно ничего не значит, если компилятор сам автоматом не переводит кодировку, а насколько я знаю он это делает в редких случаях. т.к. в винде по умолчанию эти функции ожидают текст в кодировке UTF-16, а приходит UTF-8 используемый во фрипаскале по умолчанию(вроде бы можно задавать кодировку каждому файлу исходника, но я так не делаю и не советую, если дальше хочешь юзать фпц, лучше просто взять за правило текст обертывать в Utf8ToAnsi). Utf8ToAnsi же приводит текст из UTF-8 в используемую системную кодировку, которую называют ANSI(На разных системах эта ANSI подразумевает свою кодировку, в винде UTF-16, в убунту UTF-8, да хоть utf8 поставь системной в нее переводить будет).
Запутанно может объяснил, но вроде так...
Забавно, при выставлении оптимизации компилятора fpc выше O1 моя прога падает на линковке шейдеров "Link called without any attached shader objects.". На O1 работает корректно. Учитывая, что дебажить не получается, ума не приложу, в чем может быть косяк :)
MysticCoder написал:
...Utf8ToAnsi же приводит текст из UTF-8 в используемую системную кодировку...
В системную кодировку ОСи текст приводит функция Utf8ToSys() - объявлена в модуле fileutil, если я не ошибаюсь.
P.S. На Lazarus'е сижу уже лет 6, после того, как возникла необходимость лицензионно чистой разработки, а цена на Delphi, мягко говоря, кусается...