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

您的代码中有几个错误。

主要的是你的finalend后面是a.而不是a ;end.表示单元的结束,但您尚未终止方法块function RandomRange或事件处理程序TForm1.FormCreate

这两个警告是因为您没有使用参数。:-) 您将AFromandATwo参数声明给外部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;它可能在 Free Pascal 中的同一单元中。

如果您想像原始代码一样将其作为本地函数嵌入,它会是这样的:

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 回答