W1015 La variable de boucle FOR '%s' ne peut être passée comme paramètre var (Delphi)

De RAD Studio
Aller à : navigation, rechercher

Remonter à Messages d'erreur et d'avertissement (Delphi)

Cet avertissement est émis lorsque vous transmettez la variable de contrôle d'une boucle FOR comme paramètre variable. Il s'agit d'un avertissement car la procédure recevant la variable de contrôle peut la modifier, changeant ainsi la sémantique de la boucle FOR ayant émis l'appel.


program Produce;

  procedure p1(var x : Integer);
  begin
  end;

  procedure p0;
    var
      i: Integer;
  begin
    for i := 0 to 1000 do
      p1(i);
  end;

begin
end.

Dans cet exemple, la variable de contrôle de la boucle, i, est transmise à une procédure qui reçoit un paramètre var. C'est la principale cause de l'avertissement.


program Solve;
  procedure p1(x : Integer);
  begin
  end;

  procedure p0;
    var
      i: Integer;
  begin
    i := 0;
    while i <= 1000 do
      p1(i);
  end;


begin
end.

Le moyen le plus simple pour approcher ce problème est de changer le paramètre en un paramètre par valeur. Cependant, vous pouvez avoir de bonnes raisons de passer ce paramètre par référence, assurez-vous que cette modification dans votre programme n'affecte pas une autre partie de code. Une autre approche de ce problème consiste à changer la boucle for en une boucle while équivalente, comme dans le programme précédent.