est-ce que le code ci-dessous est correct ? Peut on l'optimiser un peu ?

Lorsque je met "for i := 1 to 16" ca fonctionne mais pas lorsque
i := 1 to 17 qui me renvoie toujours "version inconnue !" et je ne comprends pas pourquoi ?

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
 
function GetIEVersion: string;
var
  Reg: TRegistry;
  str: string;
  res: boolean;
  i  : short;
  IEVersion: array [1..18, 1..18] of String;
 
begin
// Extraire le numéro de version :
IEVersion[1, 1]  := ('5.00.2014.0216');   //Windows 95/98/NT
IEVersion[1, 2]  := ('5.0');
IEVersion[2, 1]  := ('5.00.2314.1003');   //Office 2000
IEVersion[2, 2]  := ('5.0');
IEVersion[3, 1]  := ('5.00.2614.3500');   //Windows 98 Seconde Edition
IEVersion[3, 2]  := ('5.0');
IEVersion[4, 1]  := ('5.00.2919.6307');   //avec SP1
IEVersion[4, 2]  := ('5.01');
IEVersion[5, 1]  := ('5.00.2920.0000 ');  //Windows 2000
IEVersion[5, 2]  := ('5.01');
IEVersion[6, 1]  := ('5.00.3103.1000');   //Win 2000 + SP1
IEVersion[6, 2]  := ('5.01');
IEVersion[7, 1]  := ('5.00.3105.0106');   //Win 95/98/NT avec SP1
IEVersion[7, 2]  := ('5.01');
IEVersion[8, 1]  := ('5.00.3314.2101');   //Win 95/98/NT avec SP2
IEVersion[8, 2]  := ('5.01');
IEVersion[9, 1]  := ('5.00.3315.1000');   //Win 2000 avec SP2
IEVersion[9, 2]  := ('5.01');
IEVersion[10, 1] := ('5.50.4134.0600');   //95/98/ME/NT/2000
IEVersion[10, 2] := ('5.5');
IEVersion[11, 1] := ('5.50.4522.1800');   // Idem avec SP1
IEVersion[11, 2] := ('5.5');
IEVersion[12, 1] := ('5.50.4807.2300');   // Idem avec SP2
IEVersion[12, 2] := ('5.5');
IEVersion[13, 1] := ('6.0.2600.0000');    //Win 98/NT/2000/ME/XP
IEVersion[13, 2] := ('6.0');
IEVersion[14, 1] := ('6.0.2800.1106');    //Idem avec SP1
IEVersion[14, 2] := ('6.0');
IEVersion[15, 1] := ('6.0.2900.2180');    //Win XP avec SP2
IEVersion[15, 2] := ('6.0');
IEVersion[16, 1] := ('7.0.5730.11');      //Windows XP Home/Pro
IEVersion[16, 2] := ('7.0');
IEVersion[17, 1] := ('7.0.6000.16386');   //Windows Vista
IEVersion[17, 2] := ('7.0 - Vista');
 
str:='';
res:=false;
 
Reg := TRegistry.Create;
try
 Reg.RootKey := HKEY_LOCAL_MACHINE;
 if Reg.OpenKey('\Software\Microsoft\Internet Explorer', False) then begin
  res:=true;
  str:=Reg.ReadString('Version');
 end;
finally
 Reg.CloseKey;
 Reg.Free;
end;
 
if res then begin
  For i := 1 to 16 do begin   //i=17 => Version inconnue !!!!
    if IEVersion[i,1] = str then
      result := IEVersion[i,1] + ' (' + 'IE ' + IEVersion[i,2] + ')'
    else
      result := 'Version inconnue !'
    end;
end;
end;