title: Delphi for..in loop set enumeration order
body: <p>I want to iterate through a set of specific values. Simple example below</p>
  
  <pre><code>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.
  </code></pre>
  
  <p>The sample code here does what I expect and produces the following </p>
  
  <p>Iteration = 1,   value = 1</p>
  
  <p>Iteration = 2,   value = 5</p>
  
  <p>Iteration = 3,   value = 10</p>
  
  <p>Iteration = 4,   value = 20</p>
  
  <p>Now if I change the order of the set </p>
  
  <pre><code>  for b in [20,10,5,1] do
  </code></pre>
  
  <p>The output is the same as the original, that is the order of the values is not preserved.</p>
  
  <p>What is the best way to implement this?</p>