Bug du compilateur Delphi 7 en version 7.1
Je viens de trouver un bug du qui est à priori apparu avec la version 7.1.
La version 7.0.4.53 du compilateur (Dcc70.dll) m'affiche un avertissement alors que la version 7.0.8 ne le fait pas ! La dernière version est donc buggée.
Exemple de code :
Code:
1 2 3 4 5 6 7 8 9 10
|
var
objEssai : TList;
begin
try
objEssai := TList.Create;
finally
objEssai.Free;
end;
end; |
Résultat à obtenir :
[Avertissement] : La variable 'objEssai' n'est peut-être pas initialisée.
Avec la première version de Delphi 7, c'est ok. Avec la dernière (nommée 7.1), pas d'avertissement !
Re: Bug du compilateur Delphi 7 en version 7.1
Citation:
Envoyé par Mikol
Exemple de code :
var
objEssai : TList;
begin
try
objEssai := TList.Create;
finally
objEssai.Free;
end;
end;
Résultat à obtenir :
[Avertissement] : La variable 'objEssai' n'est peut-être pas initialisée.
Avec la première version de Delphi 7, c'est ok. Avec la dernière (nommée 7.1), pas d'avertissement !
ptet que la version 7.1 est plus correcte. tu devrais corriger ton code en ecrivant :
Code:
1 2 3 4 5 6 7 8 9 10
| var
objEssai : TList;
begin
objEssai := TList.Create;
try
// le code securisé
finally
objEssai.Free;
end;
end; |
car si tu mé le create dans le bloc Try, il ce peut que ton code crash avant le create et le code "objEssai.Free" inclus dans le bloc finally va liberer un objet non encore créé.
Moralité : ce n'est pas un bug.
Re: Bug du compilateur Delphi 7 en version 7.1
Citation:
Envoyé par chebreg
car si tu mé le create dans le bloc Try, il ce peut que ton code crash avant le create et le code "objEssai.Free" inclus dans le bloc finally va liberer un objet non encore créé.
Moralité : ce n'est pas un bug.
Si justement. Le compilateur devrait avertir que l'objet n'est pas forcément créé au moment de l'appel de free.