gpt4 book ai didi

delphi - 如何知道(以代码形式)在Delphi编写的程序的界面中某些字符是否正确显示(或不正确)

转载 作者:行者123 更新时间:2023-12-03 19:44:27 24 4
gpt4 key购买 nike

对不起我的英语...

我正在尝试在Delphi 7中制作一个小程序。
它的界面将以我的语言显示文字,其中包含一些带有变音符号的字符。
如果将“非Unicode程序的语言”设置为我的语言,这些字符将始终显示良好。那很正常
如果设置为其他,则有时显示不正常,有时则不然。
我怎么知道它们可以正常显示...?
哦,我不能使用Unicode组件,只能正常使用。

我发现的唯一方法是将一个字符的图像捕获到位图中并逐像素检查。但是要实现,缓慢且不够精确,需要进行大量工作。

我可以使用GetSystemDefaultLangID函数,并且知道“非Unicode程序的语言”设置为其他设置,但仍然不知道它们是否显示正常。

谢谢你的任何想法。

最佳答案

欢迎使用使用代码页编码的AnsiStrings的乐趣。您完全不应该使用AnsiStrings,您知道这一点,但是您在不解释的情况下说不能使用unicode控件。这对我来说似乎很奇怪。您应该使用以下任一方法:

(a)Delphi的Unicode版本(2009,2010,XE),其中String = UnicodeString。

(b)如果不是这样,则至少使用适当的Unicode控件(例如TNT控件),并在内部使用WideString类型(需要存储重音符号或国际字符)。

您的Delphi版本具有String = AnsiString,并且您依赖系统设置的语言环境(如您在问题中所说)来选择带重音字符的代码页表示,这是一个有问题的方案。如果您真的不能摆脱Delphi 7,至少要开始使用WideStrings和TNT Unicode控件,但是我必须说已经花了很多功夫,您最好购买Delphi XE,然后移植到Unicode。

您的问题是:“我怎么知道它们是否可以妥善保存?”您可以使用您的代码页进行编码和解码,并检查是否有任何内容被“?”替换。例如,Windows函数WideCharToMultiByte的行为如下。 MBCS是一个痛苦的世界,不值得做,但是您问过如何找到地板从您身下掉下来的地方,以便API可以帮助您了解所选的编码规则。

关于delphi - 如何知道(以代码形式)在Delphi编写的程序的界面中某些字符是否正确显示(或不正确),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5603777/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com