SearchRec: TSearchRec;
FindFirst
showmessage(SearchRec.Name);
FindNext(SearchRec);
FindClose(SearchRec);
代码效果很好。
当我用越南语而不是俄语重做所有4个步骤时,showmessage显示的文件名不正确。会出现一些?
(请参见屏幕截图):
请帮忙
答案 0 :(得分:1)
这是由于2009年之前Delphi版本实现string
类型的方式。这不是字体问题,而是字符编码问题。
所有string
变量以及所有Windows API调用都是使用ANSI编码执行的。使用ANSI,您一次只能使用一个代码页。为了混合代码页(即混合俄语和越南语编码),您需要处理文本并调用UNICODE Windows API。
以下是您的案例:
所以你有几个解决方法:
string
将是UNICODE,因此您可以混合字符集; widestring
存储您的文字,直接调用Windows范围的API - 也就是说,您不能使用FindFirst/FindNext
中定义的VCL单位或SysUtils
,也不能{ {1}}中定义的{1}}。当然,第一个是最简单的!