转换Delphi 7代码以使用Delphi 2009
我有一个字符串,需要访问它的第一个字符,所以我使用了stringname[1]。在unicode支持下,这将不再有效。我得到一个错误:[DCC error]sndkey32.pas(420):E2010不兼容的类型:“Char”和“AnsiChar” 示例代码: //vkKeyScan from the windows unit var KeyString : String[20]; MKey : Word; mkey:=vkKeyScan(KeyString[1]) //来自windows单元的vkKeyScan 变量 KeyString:String[20]; MKey:单词; mkey:=vkKeyScan(键串[1])转换Delphi 7代码以使用Delphi 2009,delphi,delphi-2009,delphi-2010,Delphi,Delphi 2009,Delphi 2010,我有一个字符串,需要访问它的第一个字符,所以我使用了stringname[1]。在unicode支持下,这将不再有效。我得到一个错误:[DCC error]sndkey32.pas(420):E2010不兼容的类型:“Char”和“AnsiChar” 示例代码: //vkKeyScan from the windows unit var KeyString : String[20]; MKey : Word; mkey:=vkKeyScan(KeyString[1]) //来自windows
在Delphi的现代版本中,我该如何写这篇文章呢?:您真的需要一个字符串,它等于Delphi 2009中的widestring吗 一个选择是定义 var键串:AnsiString
然后,当您获取KeyString[1]时,它将是一个AnsiChar而不是Char。从我的脑海中消失:您真的需要一个字符串,它等于Delphi 2009中的widestring吗 一个选择是定义 var键串:AnsiString
然后,当您获取键串[1]时,它将是AnsiChar而不是Char。类型
字符串[20]
是长度为20的短字符串,即包含20个字符的短字符串。但是短字符串的行为类似于ANSISTRING,即它们不是Unicode-一个字符就是一个字节。因此,KeyString[1]是一个AnsiChar,而vkKeyScan函数需要一个WideChar(=Char)作为参数。我真的不知道您为什么要使用类型String[20]
而不是String
(=UnicodeString
),但您可以将AnsiChar键串[1]
转换为WideChar:
mkey := vkKeyScan(WideChar(KeyString[1]))
类型
String[20]
是长度为20的短字符串,即包含20个字符的短字符串。但是短字符串的行为类似于ANSISTRING,即它们不是Unicode-一个字符就是一个字节。因此,KeyString[1]是一个AnsiChar,而vkKeyScan函数需要一个WideChar(=Char)作为参数。我真的不知道您为什么要使用类型String[20]
而不是String
(=UnicodeString
),但您可以将AnsiChar键串[1]
转换为WideChar:
mkey := vkKeyScan(WideChar(KeyString[1]))
我在最初的问题上犯了一个错误,并且已经改正了。我曾经尝试过AnsiString,但它似乎不像KeyString那样工作:AnsiString[20];谢谢你的帮助。问题恰恰相反。vkKeyScan函数需要一个WideChar!字符串[20]不是Unicode字符串,而是一个短字符串,因为“[20]”部分。我在最初的问题上犯了一个错误,已经解决了。我曾经尝试过AnsiString,但它似乎不像KeyString那样工作:AnsiString[20];谢谢你的帮助。问题恰恰相反。vkKeyScan函数需要一个WideChar!由于“[20]”部分,字符串[20]不是Unicode字符串,而是短字符串。