我有一个需要访问其第一个字符的字符串,因此我使用了stringname [1]。有了unicode支持,它不再起作用。我收到一个错误:[DCC错误] sndkey32.pas(420):E2010不兼容的类型:'Char'和'AnsiChar'
示例代码:
//来自Windows单元的vkKeyScan
变种
KeyString:字符串[20];
MKey:单词;
mkey:= vkKeyScan(KeyString [1])
我将如何在现代版本的Delphi中编写此代码
最佳答案
类型String[20]
是长度为20的ShortString,即包含20个字符的ShortString。但是ShortStrings的行为类似于AnsiStrings,即它们不是Unicode-一个字符是一个字节。因此,KeyString [1]是AnsiChar,而vkKeyScan函数期望将WideChar(= Char)作为参数。我真的不知道为什么要使用类型String[20]
而不是String
(= UnicodeString
),但是您可以将AnsiChar KeyString[1]
转换为WideChar:
mkey := vkKeyScan(WideChar(KeyString[1]))
关于delphi - 转换Delphi 7代码以与Delphi 2009一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798965/