delphi Get Enumerated type by Inc(type,Index)表示左侧不能分配给?

cl25kdpy  于 2023-05-22  发布在  其他
关注(0)|答案(2)|浏览(162)

我更像是一个C/C++的人,但是我正在将一个pascal模块从向导中的整数类型转换为枚举类型,并且遇到了以下障碍(它是通过Alt-0到Alt-9直接选择页面):

procedure TfrmWizard.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  i, j: TWizPages;
begin
  j := Inc(Low(TWizPages), Key-Ord('0')); // << line with problem

IDE会在逗号Left side cannot be assigned to和最后一个括号Incompatible types上出现问题(当鼠标悬停在Incompatible types上时,您给予太多时间阅读它)。
什么是正确的方法来做我想做的事情?

k2fxgqgv

k2fxgqgv1#

Inc是一个过程,而不是像Succ这样的函数。它递增第一个不能是常量的值。以下是工作版本:

procedure TfrmWizard.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  i, j: TWizPages;
begin
  j := Low(TWizPages);
  Inc(j, Key-Ord('0'));
wixjitnu

wixjitnu2#

Inc()接受一个变量的引用,但你传递给它的是一个常量。
试试这个:

j := TWizPages(Ord(Low(TWizPages)) + (Key-Ord('0')));

相关问题