如何防止 Lazarus 中的警告 "unicode constant cast with potential data loss"?
How do I prevent the warning "unicode constant cast with potential data loss" in Lazarus?
我正在尝试将 Tricolon Unicode 字符 #$205D 作为标题分配给 Lazarus Windows 程序中的按钮,如下所示:
MyButton.Caption := #5D;
有效,按钮正常显示三分号,但编译器发出警告 "Warning: Unicode constant cast with potential data loss"。
如何正确地将三分号字符分配给 LCL 控件的标题以消除警告?
LCL 使用UTF8 编码但#$205D 是UTF16 字符常量。所以改用 UTF8 编码常量:
const
CTricolon = #$E2##D;
//CTricolon = '⁝'; // Also works fine if using character(s) as is in the source
...
MyButton.Caption := CTricolon;
问题是2字节->(默认)1字节转换的检测是编译时,而默认1字节类型的确切代码页是运行时。
(根据语言环境改变 Windows 编码或在 Lazarus 启动时设置为 UTF8)
编译器警告您这很危险。要修复它,请将源编码设置为 utf8 并分配一个 utf8 字符串。
我正在尝试将 Tricolon Unicode 字符 #$205D 作为标题分配给 Lazarus Windows 程序中的按钮,如下所示:
MyButton.Caption := #5D;
有效,按钮正常显示三分号,但编译器发出警告 "Warning: Unicode constant cast with potential data loss"。
如何正确地将三分号字符分配给 LCL 控件的标题以消除警告?
LCL 使用UTF8 编码但#$205D 是UTF16 字符常量。所以改用 UTF8 编码常量:
const
CTricolon = #$E2##D;
//CTricolon = '⁝'; // Also works fine if using character(s) as is in the source
...
MyButton.Caption := CTricolon;
问题是2字节->(默认)1字节转换的检测是编译时,而默认1字节类型的确切代码页是运行时。
(根据语言环境改变 Windows 编码或在 Lazarus 启动时设置为 UTF8)
编译器警告您这很危险。要修复它,请将源编码设置为 utf8 并分配一个 utf8 字符串。