访问 Delphi 中的枚举数组
Access Enum Array in Delphi
我有枚举类型:
EPosition = (eLEFT, eRIGHT, eUP, eDOWN);
和 EPosition 数组:
position: array[EPosition] of Integer;
分配:
if (Key = VK_UP) then
begin
position[eTOP]:= 1;
end;
if (Key = VK_DOWN) then
begin
position[eDOWN]:= 1;
end;
if (Key = VK_LEFT) then
begin
position[eLEFT]:= 1;
end;
if (Key = VK_RIGHT) then
begin
position[eRIGHT]:= 1;
end;
那么这是我的错误点:
for I := 0 to 3 do
begin
if obSubImage.PreviewROI.position[I] = 1 then
begin
obSubImage.RenderROI.width:= abs(oldNewDiff.X);
obSubImage.RenderROI.height:= formMain.imgPreview.IEBitmap.Height;
obSubImage.RenderROI.x:= obSubImage.PreviewROI.x;
obSubImage.RenderROI.y:= obSubImage.PreviewROI.y;
panOffsetX:= 0;
panOffsetY:= 0;
obSubImage.PreviewROI.position[I]:= 0;
renderLayer(0);
end;
end;
它给出了不兼容的类型:'EPosition' 和 'Integer'。
我知道为什么会这样,我必须这样写;
obSubImage.PreviewROI.position[eLEFT]:= 0;
但我不想使用 IF-ELSE 结构。我想在 LOOP 中访问数组的所有索引。这可能吗?
您必须在循环中使用 EPosition
类型变量。
而不是 i: integer
使用 i: EPosition
for i := eLEFT to eDOWN do
或
for i := Low(EPosition) to High(EPosition) do
我有枚举类型:
EPosition = (eLEFT, eRIGHT, eUP, eDOWN);
和 EPosition 数组:
position: array[EPosition] of Integer;
分配:
if (Key = VK_UP) then
begin
position[eTOP]:= 1;
end;
if (Key = VK_DOWN) then
begin
position[eDOWN]:= 1;
end;
if (Key = VK_LEFT) then
begin
position[eLEFT]:= 1;
end;
if (Key = VK_RIGHT) then
begin
position[eRIGHT]:= 1;
end;
那么这是我的错误点:
for I := 0 to 3 do
begin
if obSubImage.PreviewROI.position[I] = 1 then
begin
obSubImage.RenderROI.width:= abs(oldNewDiff.X);
obSubImage.RenderROI.height:= formMain.imgPreview.IEBitmap.Height;
obSubImage.RenderROI.x:= obSubImage.PreviewROI.x;
obSubImage.RenderROI.y:= obSubImage.PreviewROI.y;
panOffsetX:= 0;
panOffsetY:= 0;
obSubImage.PreviewROI.position[I]:= 0;
renderLayer(0);
end;
end;
它给出了不兼容的类型:'EPosition' 和 'Integer'。 我知道为什么会这样,我必须这样写;
obSubImage.PreviewROI.position[eLEFT]:= 0;
但我不想使用 IF-ELSE 结构。我想在 LOOP 中访问数组的所有索引。这可能吗?
您必须在循环中使用 EPosition
类型变量。
而不是 i: integer
使用 i: EPosition
for i := eLEFT to eDOWN do
或
for i := Low(EPosition) to High(EPosition) do