Delphi 7中的用户语言支持

时间:2011-11-07 17:37:26

标签: delphi internationalization delphi-7

我的程序是用 Delphi 7 编写的,我想避免使用俄语或中文, 韩语尝试使用我的软,因为文件路径包含Unicode字符,我的程序无法处理它们(只要我不在支持UNICODE的新Delphi版本上移植我的程序)。

如何在Delphi 7中编写检测“Unicode语言”的函数?

1 个答案:

答案 0 :(得分:5)

Delphi 7程序(在其VCL部分中)可以毫无问题地处理俄语,中文或韩语字符。

如果正确设置了Windows系统语言,charset将匹配相应的编码,文件名将能够具有此字符集中可用的Unicode字符。实际上,当VCL调用Windows API时,默认string=AnsiString会转换为Unicode(所有....A()调用都会执行转换,然后调用....W()版本。)

您可以通过调用代码default code page强制like this(将选择要使用的字符集的那个):

if GetThreadLocale<>LCID then // force locale settings if different
  if SetThreadLocale(LCID) then
    GetFormatSettings; // resets all locale-specific variables

在这种情况下,当前系统字符集中的TFileName(= AnsiString)将由Windows转换为相应的Unicode字符,并且您将能够在Delphi 7中使用它应用

标准VCL AnsiString无法用它直接混合字符集,因为自Delphi 2009以来,感谢新的string = UnicodeString默认范例。

<强> PS:

由于CharSet只涉及#128 ..#255 chars(即所有第7位设置),如果只使用#0 ..#127 chars,无论当前的字符集/代码页设置是什么,你的字符串都是一致的。如果你只使用英文字符和数字,例如,你的路径将始终有效,无论字符集/代码页是什么。但是如果使用非英语字符,则路径仅在正确设置字符集/代码页时才有效,这是最终用户使用的路径的情况(例如,在运行时使用TOpenDialog)。 / p>