8

次の警告を表示する関数があります。

[DCC 警告] filename.pas(6939): W1035 関数 'function' の戻り値が未定義の可能性があります

ただし、関数はクリーンで小さく、既知の期待される戻り値を持っています。関数の最初のステートメントは次のとおりです。

Result := '';

また、呼び出されるローカル変数やパラメーターもありませんResult

この警告を削除するために、このメソッドを囲むことができるプラグマのようなディレクティブはありますか? これは Delphi 2007 です。

残念ながら、この Delphi インストールのヘルプ システムは機能していないため、現在、その警告のヘルプを表示できません。

頭のてっぺんから私に何ができるか知っている人はいますか?

4

6 に答える 6

7

警告を解決するためにすべてのことを実行しましたか? たぶん、私たちが見るためにコードを投稿できますか?

この方法で警告をローカルでオフにすることができます。

{$WARN NO_RETVAL OFF}
function func(...): string;
begin
  ...
end;
{$WARN NO_RETVAL ON}
于 2008-09-14T15:49:57.837 に答える
3

このユニットのコードを見たいかどうかわかりません...結局のところ、エラーは6939行目で発生します...おそらくいくつかの内部コンパイラテーブルを超えていますか?

于 2008-09-16T06:21:32.477 に答える
1

少なくともDelphi4では、Delphiコンパイラにこのようなバグがあります。関数のパラメータ(SelfとResultを含む)とローカル変数の数の合計が31を超えると、問題が発生します。たとえば、W1035警告を書き込むことができます(結果は未定義である可能性があります)。使用されていない変数を見逃す可能性があります。このプロジェクトを試してみてください:

program TestCompilerProblems;

procedure Proc;
var
  a01, a02, a03, a04, a05, a06, a07, a08, a09, a10,
  a11, a12, a13, a14, a15, a16, a17, a18, a19, a20,
  a21, a22, a23, a24, a25, a26, a27, a28, a29, a30,
  a31, a32, a33, a34, a35, a36, a37, a38, a39, a40: Integer;
begin
end;

begin
  Proc;
end.

40ではなく31のヒントが発生します。

于 2010-05-25T16:45:57.330 に答える
1

Delphi には何らかのバグがあるようです。この投稿を読んでください。最後のコメントは、あなたが持っている可能性のある他のバグレポートへのリンクです。

http://qc.codegear.com/wc/qcmain.aspx?d=8144

于 2008-09-14T15:49:19.147 に答える
1

{$WARN NO_RETVAL OFF} はあなたが探しているものですが、一般的に、このようなことが起こる理由を知りたいです。別の方法でフォーマットして、それが役立つかどうかを確認することを検討してください。

Exit のようなフロー変更コマンドはありますか? 例外などを直接発生させますか?case ステートメントの最後に、Result に値を設定する else がありますか?

これらの要素を微調整して、警告も解消されるかどうかを確認してください。

于 2008-09-15T03:00:39.470 に答える
1

これに対する適切な回答を得るには、コードを投稿する必要があります。通常、Delphi コンパイラは、Result が定義されない可能性があるコード パスがある場合に、この警告を出します。そのコード パスが明確でない場合があります。

于 2008-09-15T21:08:14.910 に答える