W1015: FOR-Schleifenvariable '%s' kann nicht als Var-Parameter übergegeben werden (Delphi)
Nach oben zu Fehler- und Warnungsmeldungen (Delphi) - Index
Sie haben versucht, die Steuervariable einer for-Schleife an eine Prozedur oder Funktion zu übergeben, die einen var-Parameter erwartet. Dies ist eine Warnung, weil die Variable in der Routine geändert werden kann und dadurch die Semantik der for-Schleife verändert wird.
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.
In diesem Beispiel wird der Schleifenzähler i an eine Prozedur übergeben, die einen var-Parameter erwartet. Dies ist die Hauptursache der Warnung.
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.
Die einfachste Lösung des Problems besteht darin, das Argument als by-value-Parameter zu deklarieren. Sie müssen dann aber sicherstellen, dass sich diese Änderung nicht auf andere Abschnitte des Quelltextes auswirkt. Es ist daher vorzuziehen, wie im obigen Programm die for- durch eine entsprechende while-Schleife zu ersetzen.