Looping Through Enum
Sometimes you may need to loop through Enum. To do this, you can use List Data Type.
local procedure EnumLoop()
var
MyEnum: Enum "My Enum";
EnumIndex: List of [Integer];
iMax, iLoop : Integer;
begin
EnumIndex := ScanSource.Ordinals();
iMax := EnumIndex.Count();
If iMax <= 0 then
exit;
iLoop := 1;
repeat //loop here
MyEnum := EnumIndex.Get(iLoop);
iLoop += 1;
until iLoop > iMax;
end;
Edit: A few people asking why I use repeat until in here. The snippet code above is the result after multiple experiments of trying to find a way to loop through enum. The repeat until was just a “remnant” from previous attempt. It was not designed to be the best code, it was just to share one way to loop through enum. Unfortunately, not many people see it that way.
Anyway, to simplify the code, use code below.
local procedure EnumLoop()
var
currEnum: Enum "My Enum";
currOrdinal : Integer;
begin
foreach currOrdinal in Enum::"My Enum".Ordinals() do begin
currEnum := Enum::"My Enum".FromInteger(currOrdinal);
//do something here
end;
end;
1 Response
[…] So I came across this post from ThatNavGuy: Looping Through Enum – That NAV guy (wordpress.com) […]