Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 将字符串转换为VKCode:不兼容的类型:“整数”和“字符串”_Delphi_Switch Statement_Delphi 10.3 Rio - Fatal编程技术网

Delphi 将字符串转换为VKCode:不兼容的类型:“整数”和“字符串”

Delphi 将字符串转换为VKCode:不兼容的类型:“整数”和“字符串”,delphi,switch-statement,delphi-10.3-rio,Delphi,Switch Statement,Delphi 10.3 Rio,我正在尝试使用引用将字符串转换为VKCode,但在尝试编译时,出现以下错误: E2001需要序号类型 E2010不兼容类型:“整数”和“字符串” 这意味着此处使用not的大小写表达式 function VKStringToWord(const aVKstring: string): Word; begin if aVKstring = '' then Exit(0); case UpperCase(aVKstring) of 'VK_A': Result :=

我正在尝试使用引用将字符串转换为VKCode,但在尝试编译时,出现以下错误:

E2001需要序号类型

E2010不兼容类型:“整数”和“字符串”

这意味着此处使用not的大小写表达式

function VKStringToWord(const aVKstring: string): Word;
begin
  if aVKstring = '' then
    Exit(0);
  case UpperCase(aVKstring) of
    'VK_A':
      Result := $41;
  else
    Result := 0;
  end;
end;
正确,不能对字符串使用大小写。根据报告:

selectorExpression是任何序号类型的表达式

我的。字符串不是顺序类型

但是,您可以做的是:

函数VKStringToWordconst AVKString:string:Word; 常数 数据:记录的数组[0..192] 键:字符串; 瓦尔:字 结束= 键:“VK_0”;增值税:30美元, 键:“VK_1”;增值税:31美元, 关键词:“VK_2”;增值税:32美元, 关键词:“VK_3”;瓦尔:33美元, 关键词:“VK_4”;瓦尔:34美元, 关键词:“VK_5”;瓦尔:35美元, 关键词:“VK_6”;Val:$36, 关键词:“VK_7”;瓦尔:37美元, 关键词:“VK_8”;瓦尔:38美元, 关键词:“VK_9”;增值税:39美元, 关键词:“VK_A”;瓦尔:41美元, 键:“VK_接受”;瓦尔:30, 键:“VK_添加”;瓦尔:107, 关键词:“VK_应用程序”;瓦尔:5天, 关键词:“VK_附件”;Val:$F6, 键:“VK_B”;增值税:42美元, 键:“VK_后退”;瓦尔:8, 键:“VK_浏览器_返回”;Val:$A6, 键:“VK_浏览器_收藏夹”;瓦尔:$AB, 键:“VK_浏览器_前进”;Val:$A7, 键:“VK_浏览器_主页”;Val:$AC, 键:“VK_浏览器_刷新”;Val:$A8, 关键字:“VK_浏览器_搜索”;Val:$AA, 键:“VK_浏览器_停止”;Val:$A9, 关键词:“VK_C”;瓦尔:43美元, 键:“VK_取消”;瓦尔:3, 关键词:“VK_资本”;瓦尔:20, 键:“VK_清除”;瓦尔:12, 键:“VK_控制”;瓦尔:17, 键:“VK_CONVERT”;瓦尔:28, 关键词:“VK_CRSEL”;Val:$F7, 关键词:“VK_D”;瓦尔:44美元, 键:“VK_十进制”;瓦尔:110, 键:“VK_DELETE”;瓦尔:46, 关键词:“VK_DIVIDE”;瓦尔:111, 键:“VK_向下”;瓦尔:40, 关键词:“VK_E”;瓦尔:45美元, 键:“VK_END”;瓦尔:35, 关键词:“VK_EREOF”;Val:$F9, 钥匙:“VK_逃生”;瓦尔:27, 键:“VK_执行”;瓦尔:43, 键:“VK_EXSEL”;Val:$F8, 关键词:“VK_F”;Val:$46, 键:“VK_F1”;瓦尔:112, 键:“VK_F10”;瓦尔:121, 键:“VK_F11”;瓦尔:122, 关键词:“VK_F12”;瓦尔:123, 关键词:“VK_F13”;瓦尔:124, 关键词:“VK_F14”;瓦尔:125, 关键词:“VK_F15”;瓦尔:126, 关键词:“VK_F16”;瓦尔:127, 关键词:“VK_F17”;瓦尔:128, 关键词:“VK_F18”;瓦尔:129, 关键词:“VK_F19”;瓦尔:130, 键:“VK_F2”;瓦尔:113, 键:“VK_F20”;瓦尔:131, 键:“VK_F21”;瓦尔:132, 关键词:“VK_F22”;瓦尔:133, 关键词:“VK_F23”;瓦尔:134, 关键词:“VK_F24”;瓦尔:135, 关键词:“VK_F3”;瓦尔:114, 关键词:“VK_F4”;瓦尔:115, 键:“VK_F5”;瓦尔:116, 关键词:“VK_F6”;瓦尔:117, 键:“VK_F7”;瓦尔:118, 键:“VK_F8”;瓦尔:119, 关键词:“VK_F9”;瓦尔:120, 关键:“VK_决赛”;瓦尔:24, 键:“VK_G”;瓦尔:47美元, 键:“VK_H”;瓦尔:48美元, 关键词:“VK_HANGUL”;瓦尔:21, 关键词:“VK_HANJA”;瓦尔:25, 关键词:“VK_帮助”;瓦尔:47, 关键词:“VK_最高值”;Val:$FFFF, 键:“VK_主页”;瓦尔:36, 关键词:“VK_I”;增值税:49美元, 键:“VK_插入”;瓦尔:45, 关键词:“VK_J”;增值税:4A美元, 关键词:“VK_JUNJA”;瓦尔:23, 键:“VK_K”;增值税:40亿美元, 键:“VK_KANA”;瓦尔:21, 关键词:“VK_汉字”;瓦尔:25, 键:“VK_L”;Val:$4C, 键:“VK_启动_APP1”;Val:$B6, 关键词:“VK_发布应用程序2”;Val:$B7, 关键词:“VK_发布_邮件”;Val:$B4, 键:“VK_启动_媒体_选择”;Val:$B5, 键:“VK_LBUTTON”;瓦尔:1, 键:“VK_LCL_ALT”;瓦尔:18, 键:“VK_LCL_AT” ; Val:$103, 键:“VK_LCL_反斜杠”;Val:$DC, 键:“VK_LCL_呼叫”;瓦尔:101美元, 关键词:“VK_LCL_CAPSLOCK”;瓦尔:20, 关键词:“VK_LCL_CLOSE_BRAKET”;瓦尔:$DD, 键:“VK_LCL_逗号”;瓦尔:$BC, 键:“VK_LCL_ENDCALL”;增值税:102美元, 关键字:“VK_LCL_EQUAL”;瓦尔:$BB, 关键词:“VK_LCL_LALT”;Val:$A4, 键:“VK_LCL_减号”;Val:$BD, 关键词:“VK_LCL_OPEN_BRAKET”;Val:$DB, 键:“VK_LCL_点”;瓦尔:$BE, 关键词:“VK_LCL_电源”;瓦尔:100美元, 关键词:“VK_LCL_报价”;瓦尔:$DE, 关键词:“VK_LCL_RALT”;增值税:5美元, 关键词:“VK_LCL_SEMI_逗号”;瓦尔:$BA, 关键词:“VK_LCL_斜线”;瓦尔:$BF, 关键词:“VK_LCL_TILDE”;Val:$C0, 键:“VK_LCONTROL”;Val:$A2, 键:“VK_左”;瓦尔:37, 关键词:“VK_LMENU”;Val:$A4, 键:“VK_LSHIFT”;Val:$A0, 关键词:“VK_LWIN”;增值税:50亿美元, 键:“VK_M”;Val:$4D, 关键词:“VK_MBUTTON”;瓦尔:4, 关键词:“VK_媒体_下一首歌”;Val:$B0, 键:“VK_媒体_播放_暂停”;Val:$B3, 关键词:“VK_媒体_上一曲目”;Val:$B1, 键:“VK_媒体_停止”;Val:$B2, 键:“VK_菜单”;瓦尔:18, 键:“VK_模式更改”;瓦尔:31, 键:“VK_乘法”;瓦尔:106, 键:“VK_N”;Val:$4E, 键:“下一个VK_”;瓦尔:34, 关键词:“VK_NONAME”;Val:$FC, 键:“VK_非转换”;瓦尔:29, 关键词:“VK_NUMLOCK”;增值税:90美元, 关键词:“VK_NUMPAD0”;瓦尔:96, 关键词:“VK_NUMPAD1”;瓦尔:97, 关键词:“VK_NUMPAD2”;瓦尔:98, 关键词:“VK_NUMPAD3”;瓦尔:99, 关键词:“VK_NUMPAD4”;瓦尔:100, 关键词:“VK_NUMPAD5”;瓦尔:101, 关键词:“VK_NUMPAD6”;瓦尔:102, 关键词:“VK_NUMPAD7”;瓦尔:103, 关键词:“VK_NUMPAD8”;瓦尔:104, 关键词:“VK_NUMPAD9”;瓦尔:105, 关键词:“VK_O”;Val:$4F, 关键词:“VK_OEM_1”;瓦尔:$BA, 关键词:“VK_OEM_102”;Val:$E2, 关键词:“VK_OEM_2”;瓦尔:$BF, 关键词:“VK_OEM_3”;Val:$C0, 关键词:“VK_OEM_4”;Val:$DB, 关键词:“VK_OEM_5”;Val:$DC, 关键词:“VK_OEM_6”;瓦尔:$DD, 关键词:“VK_OEM_7”;瓦尔:$DE, 关键词:“VK_OEM_8”;Val:$DF, 键:“VK_OEM_清除”;Val:$FE, 关键词:“VK_OEM_逗号”;瓦尔:$BC, 键:“VK_OEM_减号”;Val:$BD, 关键词:“VK_OEM_期”;瓦尔:$BE, 关键词:“VK_OEM_PLUS”;瓦尔:$BB, 键:“VK_P”;增值税:50美元, 关键词:“VK_PA1”;Val:$FD, 键:“暂停”;瓦尔:19, 关键:“VK_游戏”;Val:$FA, 关键词:“VK_打印”;瓦尔:42, 关键词:“VK_PRIOR”;瓦尔:33, Key:'VK_PROCESSKEY';Val:$E7, 关键词:“VK_Q”;瓦尔:51美元, 键:“VK_R”;瓦尔:52美元, 键:“VK_RBUTTON”;瓦尔:2, 键:“VK_RCONTROL”;增值税:3美元, 键:“VK_返回”;瓦尔:13, 关键词:“VK_RIGHT”;瓦尔:39, 键:“VK_RMENU”;增值税:5美元, 键:“VK_换档”;Val:$A1, 关键词:“VK_RWIN”;增值税:5美分, 关键词:“VK_S”;瓦尔:53美元, 键:“VK_滚动”;瓦尔:91美元, 键:“VK_选择”;瓦尔:41, 键:“VK_分离器”;瓦尔:108, 键:“VK_移位”;瓦尔:16, 关键词:“VK_睡眠”;Val:$5F, 键:“VK_快照”;瓦尔:44, 键:“VK_空间”;瓦尔:32, 键:“VK_减法”;瓦尔:109, 关键词:“VK_T”;瓦尔:54美元, 键:“VK_选项卡”;瓦尔:9, 关键词:“VK_”;瓦尔:55美元, 键:“VK_未定义”;Val:$FF, 关键词:“VK_未知”;瓦尔:0, 键:“VK_UP”;瓦尔:38, 键:“VK_V”;Val:$56, 键:“VK_音量下降”;瓦尔:$AE, 按键:“VK_音量_静音”;瓦尔:$AD, 键:“VK_音量向上”;Val:$AF, 键:“VK_W”;Val:$57, 键:“VK_X”;瓦尔:58美元, 键:“VK_XBUTTON1”;瓦尔:5, 键:“VK_XBUTTON2”;瓦尔:6, 键:“VK_Y”;瓦尔:59美元, 键:“VK_Z”;Val:$5A, 键:“VK_缩放”;Val:$FB ; 开始 对于数据do中的var VK 如果是SameTextVK.Key,则为AVK 然后串 ExitVK.Val; 结果:=0; 终止 正确,不能对字符串使用大小写。根据报告:

selectorExpression是任何序号类型的表达式

我的。字符串不是顺序类型

但是,您可以做的是:

函数VKStringToWordconst AVKString:string:Word; 常数 数据:记录的数组[0..192] 键:字符串; 瓦尔:字 结束= 键:“VK_0”;增值税:30美元, 键:“VK_1”;增值税:31美元, 关键词:“VK_2”;增值税:32美元, 关键词:“VK_3”;瓦尔:33美元, 关键词:“VK_4”;瓦尔:34美元, 关键词:“VK_5”;瓦尔:35美元, 关键词:“VK_6”;Val:$36, 关键词:“VK_7”;瓦尔:37美元, 关键词:“VK_8”;瓦尔:38美元, 关键词:“VK_9”;增值税:39美元, 关键词:“VK_A”;瓦尔:41美元, 键:“VK_接受”;瓦尔:30, 键:“VK_添加”;瓦尔:107, 关键词:“VK_应用程序”;瓦尔:5天, 关键词:“VK_附件”;Val:$F6, 键:“VK_B”;增值税:42美元, 键:“VK_后退”;瓦尔:8, 键:“VK_浏览器_返回”;Val:$A6, 键:“VK_浏览器_收藏夹”;瓦尔:$AB, 键:“VK_浏览器_前进”;Val:$A7, 键:“VK_浏览器_主页”;Val:$AC, 键:“VK_浏览器_刷新”;Val:$A8, 关键字:“VK_浏览器_搜索”;Val:$AA, 键:“VK_浏览器_停止”;Val:$A9, 关键词:“VK_C”;瓦尔:43美元, 键:“VK_取消”;瓦尔:3, 关键词:“VK_资本”;瓦尔:20, 键:“VK_清除”;瓦尔:12, 键:“VK_控制”;瓦尔:17, 键:“VK_CONVERT”;瓦尔:28, 关键词:“VK_CRSEL”;Val:$F7, 关键词:“VK_D”;瓦尔:44美元, 键:“VK_十进制”;瓦尔:110, 键:“VK_DELETE”;瓦尔:46, 关键词:“VK_DIVIDE”;瓦尔:111, 键:“VK_向下”;瓦尔:40, 关键词:“VK_E”;瓦尔:45美元, 键:“VK_END”;瓦尔:35, 关键词:“VK_EREOF”;Val:$F9, 钥匙:“VK_逃生”;瓦尔:27, 键:“VK_执行”;瓦尔:43, 键:“VK_EXSEL”;Val:$F8, 关键词:“VK_F”;Val:$46, 键:“VK_F1”;瓦尔:112, 键:“VK_F10”;瓦尔:121, 键:“VK_F11”;瓦尔:122, 关键词:“VK_F12”;瓦尔:123, 关键词:“VK_F13”;瓦尔:124, 关键词:“VK_F14”;瓦尔:125, 关键词:“VK_F15”;瓦尔:126, 关键词:“VK_F16”;瓦尔:127, 关键词:“VK_F17”;瓦尔:128, 关键词:“VK_F18”;瓦尔:129, 关键词:“VK_F19”;瓦尔:130, 键:“VK_F2”;瓦尔:113, 键:“VK_F20”;瓦尔:131, 键:“VK_F21”;瓦尔:132, 关键词:“VK_F22”;瓦尔:133, 关键词:“VK_F23”;瓦尔:134, 关键词:“VK_F24”;瓦尔:135, 关键词:“VK_F3”;瓦尔:114, 关键词:“VK_F4”;瓦尔:115, 键:“VK_F5”;瓦尔:116, 关键词:“VK_F6”;瓦尔:117, 键:“VK_F7”;瓦尔:118, 键:“VK_F8”;瓦尔:119, 关键词:“VK_F9”;瓦尔:120, 关键:“VK_决赛”;瓦尔:24, 键:“VK_G”;瓦尔:47美元, 键:“VK_H”;瓦尔:48美元, 关键词:“VK_HANGUL”;瓦尔:21, 关键词:“VK_HANJA”;瓦尔:25, 关键词:“VK_帮助”;瓦尔:47, 关键词:“VK_最高值”;Val:$FFFF, 键:“VK_主页”;瓦尔:36, 关键词:“VK_I”;增值税:49美元, 键:“VK_插入”;瓦尔:45, 关键词:“VK_J”;增值税:4A美元, 关键词:“VK_JUNJA”;瓦尔:23, 键:“VK_K”;增值税:40亿美元, 键:“VK_KANA”;瓦尔:21, 关键词:“VK_汉字”;瓦尔:25, 键:“VK_L”;Val:$4C, 键:“VK_启动_APP1”;Val:$B6, 关键词:“VK_发布应用程序2”;Val:$B7, 关键词:“VK_发布_邮件”;Val:$B4, 键:“VK_启动_媒体_选择”;Val:$B5, 键:“VK_LBUTTON”;瓦尔:1, 键:“VK_LCL_ALT”;瓦尔:18, 键:“VK_LCL_AT”;Val:$103, 键:“VK_LCL_反斜杠”;Val:$DC, 键:“VK_LCL_呼叫”;瓦尔:101美元, 关键词:“VK_LCL_CAPSLOCK”;瓦尔:20, 关键词:“VK_LCL_CLOSE_BRAKET”;瓦尔:$DD, 键:“VK_LCL_逗号”;瓦尔:$BC, 键:“VK_LCL_ENDCALL” ; 增值税:102美元, 关键字:“VK_LCL_EQUAL”;瓦尔:$BB, 关键词:“VK_LCL_LALT”;Val:$A4, 键:“VK_LCL_减号”;Val:$BD, 关键词:“VK_LCL_OPEN_BRAKET”;Val:$DB, 键:“VK_LCL_点”;瓦尔:$BE, 关键词:“VK_LCL_电源”;瓦尔:100美元, 关键词:“VK_LCL_报价”;瓦尔:$DE, 关键词:“VK_LCL_RALT”;增值税:5美元, 关键词:“VK_LCL_SEMI_逗号”;瓦尔:$BA, 关键词:“VK_LCL_斜线”;瓦尔:$BF, 关键词:“VK_LCL_TILDE”;Val:$C0, 键:“VK_LCONTROL”;Val:$A2, 键:“VK_左”;瓦尔:37, 关键词:“VK_LMENU”;Val:$A4, 键:“VK_LSHIFT”;Val:$A0, 关键词:“VK_LWIN”;增值税:50亿美元, 键:“VK_M”;Val:$4D, 关键词:“VK_MBUTTON”;瓦尔:4, 关键词:“VK_媒体_下一首歌”;Val:$B0, 键:“VK_媒体_播放_暂停”;Val:$B3, 关键词:“VK_媒体_上一曲目”;Val:$B1, 键:“VK_媒体_停止”;Val:$B2, 键:“VK_菜单”;瓦尔:18, 键:“VK_模式更改”;瓦尔:31, 键:“VK_乘法”;瓦尔:106, 键:“VK_N”;Val:$4E, 键:“下一个VK_”;瓦尔:34, 关键词:“VK_NONAME”;Val:$FC, 键:“VK_非转换”;瓦尔:29, 关键词:“VK_NUMLOCK”;增值税:90美元, 关键词:“VK_NUMPAD0”;瓦尔:96, 关键词:“VK_NUMPAD1”;瓦尔:97, 关键词:“VK_NUMPAD2”;瓦尔:98, 关键词:“VK_NUMPAD3”;瓦尔:99, 关键词:“VK_NUMPAD4”;瓦尔:100, 关键词:“VK_NUMPAD5”;瓦尔:101, 关键词:“VK_NUMPAD6”;瓦尔:102, 关键词:“VK_NUMPAD7”;瓦尔:103, 关键词:“VK_NUMPAD8”;瓦尔:104, 关键词:“VK_NUMPAD9”;瓦尔:105, 关键词:“VK_O”;Val:$4F, 关键词:“VK_OEM_1”;瓦尔:$BA, 关键词:“VK_OEM_102”;Val:$E2, 关键词:“VK_OEM_2”;瓦尔:$BF, 关键词:“VK_OEM_3”;Val:$C0, 关键词:“VK_OEM_4”;Val:$DB, 关键词:“VK_OEM_5”;Val:$DC, 关键词:“VK_OEM_6”;瓦尔:$DD, 关键词:“VK_OEM_7”;瓦尔:$DE, 关键词:“VK_OEM_8”;Val:$DF, 键:“VK_OEM_清除”;Val:$FE, 关键词:“VK_OEM_逗号”;瓦尔:$BC, 键:“VK_OEM_减号”;Val:$BD, 关键词:“VK_OEM_期”;瓦尔:$BE, 关键词:“VK_OEM_PLUS”;瓦尔:$BB, 键:“VK_P”;增值税:50美元, 关键词:“VK_PA1”;Val:$FD, 键:“暂停”;瓦尔:19, 关键:“VK_游戏”;Val:$FA, 关键词:“VK_打印”;瓦尔:42, 关键词:“VK_PRIOR”;瓦尔:33, Key:'VK_PROCESSKEY';Val:$E7, 关键词:“VK_Q”;瓦尔:51美元, 键:“VK_R”;瓦尔:52美元, 键:“VK_RBUTTON”;瓦尔:2, 键:“VK_RCONTROL”;增值税:3美元, 键:“VK_返回”;瓦尔:13, 关键词:“VK_RIGHT”;瓦尔:39, 键:“VK_RMENU”;增值税:5美元, 键:“VK_换档”;Val:$A1, 关键词:“VK_RWIN”;增值税:5美分, 关键词:“VK_S”;瓦尔:53美元, 键:“VK_滚动”;瓦尔:91美元, 键:“VK_选择”;瓦尔:41, 键:“VK_分离器”;瓦尔:108, 键:“VK_移位”;瓦尔:16, 关键词:“VK_睡眠”;Val:$5F, 键:“VK_快照”;瓦尔:44, 键:“VK_空间”;瓦尔:32, 键:“VK_减法”;瓦尔:109, 关键词:“VK_T”;瓦尔:54美元, 键:“VK_选项卡”;瓦尔:9, 关键词:“VK_”;瓦尔:55美元, 键:“VK_未定义”;Val:$FF, 关键词:“VK_未知”;瓦尔:0, 键:“VK_UP”;瓦尔:38, 键:“VK_V”;Val:$56, 键:“VK_音量下降”;瓦尔:$AE, 按键:“VK_音量_静音”;瓦尔:$AD, 键:“VK_音量向上”;Val:$AF, 键:“VK_W”;Val:$57, 键:“VK_X”;瓦尔:58美元, 键:“VK_XBUTTON1”;瓦尔:5, 键:“VK_XBUTTON2”;瓦尔:6, 键:“VK_Y”;瓦尔:59美元, 键:“VK_Z”;Val:$5A, 键:“VK_缩放”;Val:$FB ; 开始 对于数据do中的var VK 如果是SameTextVK.Key,则为AVKString ExitVK.Val; 结果:=0; 终止
Fwiw,当我在进行商业Delphi开发时,除了Unicode支持之外,我从来没有真正感到迫切需要任何D7之后的语言更改,特别是不需要泛型或增强的RTTI等。Otoh,字符串大小写支持将提供
语言实际表达能力和简洁性的最大单次提升。Imo,ymmv,等等…Fwiw,当我在做商业Delphi开发时,除了Unicode支持之外,我从来没有真正感觉到对D7之后的任何语言更改的迫切需要,特别是泛型或增强的RTTI,等等,字符串大小写支持将最大限度地提高语言的实际表达能力和简洁性。Imo、ymmv等。。。