Voici le code incriminé

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
type
  TMonTest = (mt1, mt2, mt3{, mt4, mt5, mt6, mt7, mt8, mt9});
  TMonTests = Set of TMonTest;
end;
Puis dans un bouton mettre

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
var
  T1 : TMonTests;
  T2 : TMonTest;
  i : integer;
begin
  i := 0;
  T1 := [mt1, mt3];
  for T2 in  T1 do
  begin
    case T2 of
      mt1: Showmessage('mt1');
      mt2 : Showmessage('mt2');
      mt3 : Showmessage('mt3');
    end;
    Inc(i);
  end;
  Showmessage('boucle :' + IntToStr(i));
end;
Explication du phénomène

- En Exécution :
Si on exécute le code suivant on a mt1 et Mt3 qui apparaissent via un showmessage et à la fin boucle indique 2.

-En Pas à pas :
Chose étrange on passe 8 fois dans la boucle for (si vous placez le point d'arrêt sur le for on est obligé de faire 8 fois F8) mais on ne passera que 2 fois dans le corps de la boucle.

D'où peut venir se phénomène ?
Est ce que vous avez ce même phénomène avec d'autres version de delphi ?