W1036 La variable '%s' n'est peut-être pas initialisée (Delphi)
Remonter à Messages d'erreur et d'avertissement (Delphi)
Cet avertissement est donné si une variable n'a pas eu de valeur affectée sur chaque chemin de code menant au point où elle est utilisée.
program Produce;
(*$WARNINGS ON*)
var
B: Boolean;
C: (Red,Green,Blue);
procedure Simple;
var
I : Integer;
begin
Writeln(I); (* <-- Avertissement ici *)
end;
procedure IfStatement;
var
I : Integer;
begin
if B then
I := 42;
Writeln(I); (* <-- Avertissement ici *)
end;
procedure CaseStatement;
var
I: Integer;
begin
case C of
Red..Blue: I := 42;
end;
Writeln(I); (* <-- Avertissement ici *)
end;
procedure TryStatement;
var
I: Integer;
begin
try
I := 42;
except
Writeln('Should not get here!');
end;
Writeln(I); (* <-- Avertissement ici *)
end;
begin
B := False;
end.
Dans une instruction if, vous devez vérifier que la variable est affectée dans les deux branches. Dans une instruction case, vous devez ajouter une partie else pour vérifier que la variable a une valeur affectée dans chaque cas concevable. Dans une construction try-except, le compilateur présume que les affectations de la partie try peuvent en fait ne pas arriver, même si elles sont au tout début de la partie try et si simples qu'elles ne peuvent pas provoquer une exception.
program Solve;
(*$WARNINGS ON*)
var
B: Boolean;
C: (Red,Green,Blue);
procedure Simple;
var
I : Integer;
begin
I := 42;
Writeln(I);
end;
procedure IfStatement;
var
I : Integer;
begin
if B then
I := 42
else
I := 0;
Writeln(I); (* Doit affecter I dans la partie else *)
end;
procedure CaseStatement;
var
I: Integer;
begin
case C of
Red..Blue: I := 42;
else I := 0;
end;
Writeln(I); (* Doit affecter I dans la partie else *)
end;
procedure TryStatement;
var
I: Integer;
begin
I := 0;
try
I := 42;
except
Writeln('Should not get here!');
end;
Writeln(I); (* Doit affecter I avant le try *)
end;
begin
B := False;
end.
La solution est d'ajouter des affectations aux chemins de code où elles sont manquantes ou d'ajouter une affectation avant une instruction conditionnelle ou une construction try-except.