将Delphi 7代码转换为Delphi 2009

时间:2010-05-09 19:55:11

标签: delphi delphi-2009 delphi-2010

我有一个String,我需要访问第一个字符,所以我使用了stringname [1]。随着unicode支持,这不再有效。我收到一个错误:[DCC错误] sndkey32.pas(420):E2010不兼容的类型:'Char'和'AnsiChar'

示例代码:

//vkKeyScan from the windows unit

var
KeyString : String[20];
MKey : Word;

mkey:=vkKeyScan(KeyString[1])

我将如何在Delphi的现代版本中编写它

2 个答案:

答案 0 :(得分:4)

类型String[20]是长度为20的ShortString,即包含20个字符的ShortString。但是ShortStrings的行为类似于AnsiStrings,即它们不是Unicode - 一个字符是一个字节。因此KeyString [1]是一个AnsiChar,而vkKeyScan函数需要一个WideChar(= Char)作为参数。我真的不知道您为什么要使用String[20]类型代替String(= UnicodeString),但您可以将AnsiChar KeyString[1]转换为WideChar:< / p>

mkey := vkKeyScan(WideChar(KeyString[1]))

答案 1 :(得分:0)

脱离我的头脑:你真的需要一个字符串,这相当于Delphi 2009中的宽字符串吗?

一种选择是定义     var KeyString:AnsiString;

然后当您使用KeyString [1]时,它将是一个AnsiChar而不是Char。

相关问题