W1035 関数 '%s' の戻り値が設定されていません (Delphi)
エラーと警告のメッセージ(Delphi) への移動
この警告は一部のコードパスで関数の戻り値へ値が代入されなかった場合に表示されます。
言い換えれば,関数を実行しても戻り値へ何も値を代入されない可能性があります。
program Produce; (*$WARNINGS ON*) var B: Boolean; C: (Red,Green,Blue); function Simple: Integer; begin end; (*<-- ここで警告*) function IfStatement: Integer; begin if B then Result := 42; end; (*<-- ここで警告*) function CaseStatement: Integer; begin case C of Red..Blue: Result := 42; end; end; (*<-- ここで警告*) function TryStatement: Integer; begin try Result := 42; except Writeln('Should not get here!'); end; end; (*<-- ここで警告*) begin B := False; end.
{ 手続き IfStatement と CaseStatement の問題点は一部のコードパスで結果へ値が代入されない点である。TryStatement では,コンパイラは Result へ値が代入される前に例外が発生する可能性があるとみなす }
program Solve; (*$WARNINGS ON*) var B: Boolean; C: (Red,Green,Blue); function Simple: Integer; begin Result := 42; end; function IfStatement: Integer; begin if B then Result := 42 else Result := 0; end; function CaseStatement: Integer; begin case C of Red..Blue: Result := 42; else Result := 0; end; end; function TryStatement: Integer; begin Result := 0; try Result := 42; except Writeln('Should not get here!'); end; end; begin B := False; end.
{ 考えられるすべてのコードパスで結果の変数へ値が代入されるようにすれば解決する }