I want to iterate through a set of specific values. Simple example below
program Project1;
{$APPTYPE CONSOLE}
var
a, b: word;
wait: string;
begin
a := 0;
for b in [1,5,10,20] do
begin
a := a + 1;
writeln('Iteration = ', a, ', value = ', b);
end;
read(wait);
end.
The sample code here does what I expect and produces the following
Iteration = 1, value = 1
Iteration = 2, value = 5
Iteration = 3, value = 10
Iteration = 4, value = 20
Now if I change the order of the set
for b in [20,10,5,1] do
The output is the same as the original, that is the order of the values is not preserved.
What is the best way to implement this?
Sets are not ordered containers. You cannot change the order of a set’s contents. A for-in loop always iterates through sets in numerical order.
If you need an ordered list of numbers, then you can use an array or
TList<Integer>.