W1035 関数 '%s' の戻り値が設定されていません (Object Pascal)

提供: Appmethod Topics
移動先: 案内検索

エラーと警告のメッセージ(Object Pascal):インデックス への移動

この警告は一部のコードパスで関数の戻り値へ値が代入されなかった場合に表示されます。

言い換えれば,関数を実行しても戻り値へ何も値を代入されない可能性があります。


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.

{ 考えられるすべてのコードパスで結果の変数へ値が代入されるようにすれば解決する }