delphi - 转换Delphi 7代码以与Delphi 2009一起使用

标签 delphi delphi-2009 delphi-2010

我有一个需要访问其第一个字符的字符串,因此我使用了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/

相关文章:

delphi - Delphi中使用动态按钮的MouseDown事件

Delphi找不到System.dcu;默认路径设置应该是什么?

delphi - 在最大化丢失分配值之前动态分配表单大小

delphi - 专门评估多个 boolean 条件,只有一个可以为真(Delphi)

delphi - 让 Allen Bauer 的 TMulticastEvent<T> 正常工作

delphi - Delphi 中的 .NET 'Type' 类替代方案

delphi - 逐行读取流

delphi - 更新 TStringList 名称/值对中的名称值

delphi - 将函数转换为delphi 2009/2010(unicode)

delphi - 如何修改TVirtualStringTree中的焦点框颜色?