0

RandomRange に問題があります。コードは次のとおりです。

procedure TForm1.FormCreate(Sender: TObject);
var
i : Integer;

  function RandomRange(const AFrom, ATo: Integer): Integer;
  begin
  Result := RandomRange(15,20);
  Case Result of
  15 : ShowMessage('message1');
  16 : ShowMessage('message2');
  17 : ShowMessage('message3');
  18 : ShowMessage('message4');
  19 : ShowMessage('message5');
  20 : ShowMessage('message6');
  end;
end.

コンパイルしようとすると、次のエラーが発生します。

unit1.pas(46,30) Hint: Parameter "AFrom" not used
unit1.pas(46,37) Hint: Parameter "ATo" not used
unit1.pas(57,4) Fatal: Syntax error, ";" expected but "." found

どうなり得るか?ありがとう

4

1 に答える 1

2

コードにいくつかのエラーがあります。

主なものは、ファイナルの後に。の代わりにendが続くことです。ユニットの終わりを意味しますが、またはイベントハンドラーのメソッドブロックをまだ終了していません。.;end.function RandomRangeTForm1.FormCreate

2つの警告は、パラメーターを使用していないためです。:-)AFromおよびATwoパラメータを外部RandomRange関数に宣言しますが、コードでそれらを使用しないでください。の内部呼び出しによって混乱し、RandomRangeスコープに関してコンパイラーを混乱させています。

私はそれを次のようなものに変更します:

function MyRandomRange: Integer;
begin
  Result := RandomRange(15, 20);
  case Result of
    15 : ShowMessage('message1');
    16 : ShowMessage('message2');
    17 : ShowMessage('message3');
    18 : ShowMessage('message4');
    19 : ShowMessage('message5');
    20 : ShowMessage('message6');
  end;
end;

コンパイラがを見つけることができないと文句を言う場合は、RandomRangeおそらくuses句に単位がありません。Delphiでは、ユニットRandomRangeで定義されています。mathおそらくFreePascalの同じユニットにあります。

元のコードのようにローカル関数として埋め込みたままにしておきたい場合は、次のようになります。

procedure TForm1.FormCreate(Sender: TObject);

  function MyRandomRange: Integer;
  begin
    Result := RandomRange(15, 20);
    case Result of
      15 : ShowMessage('message1');
      16 : ShowMessage('message2');
      17 : ShowMessage('message3');
      18 : ShowMessage('message4');
      19 : ShowMessage('message5');
      20 : ShowMessage('message6');
    end;
  end;
begin
  MyRandomRange;
end;
于 2012-05-30T15:48:33.307 に答える