Dan*_*nny 3 delphi console-application delphi-xe
我有这个问题,如果我有:
mychr ='';
mychr中的'space'等于#255(手动输入ALT + 255),我写道:
myord = ord(mychr)
到myord返回值160而不是255.当然,同样的问题也是字符ALT + 254等.因为我可以解决这个问题?我在控制台模式下测试了delphi xe.
注意:如果我使用:
mychar =#255;
然后函数ord()正确返回值.
我认为问题是Windows Alt + Num快捷方式根据本地代码页插入字符,而现代Delphi使用Unicode字符,这些不同(除非值小于或等于127,我认为).解决方案是#255在代码中显式输入值.另外,在代码中包含"隐形"特殊字符是一个非常糟糕的习惯,因为如果不复制到外部工具,你无法分辨出它是什么字符!此外,您必须信任该.pas文件的文本编码.这是很多更好地使用常量一样#255.更好的是,做
const
MY_PRECIOUS_VALUE = #255;
Run Code Online (Sandbox Code Playgroud)
并在每次需要时使用此常量.
更新
根据英语维基百科关于替代代码的文章:
如果键入的数字具有前导0(零),则使用的字符集是与当前输入语言环境匹配的Windows代码页.对于大多数使用拉丁字母的系统,这是Windows-1252.有关完整列表,请参阅代码页.如果该数字没有前导0(零),则调用DOS兼容性.使用的字符集是当前输入语言环境的DOS代码页.对于使用英语的系统,这是代码页437.对于使用拉丁字母的大多数其他系统,这是代码页850.有关完整列表,请参阅代码页.
所以,如果你真的,真的想继续输入Alt键码,你最好输入Alt并0255使用前导零.