Lazarus RandomRange功能

时间:2012-05-30 15:40:05

标签: delphi pascal lazarus

我有一个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

它可能是什么?感谢

1 个答案:

答案 0 :(得分:2)

您的代码中有几处错误。

主要原因是您的最终end后跟.而不是;end.表示单元的结尾,但您尚未终止function RandomRange或事件处理程序TForm1.FormCreate的方法块。

这两个警告是因为您没有使用这些参数。 :-)您将AFromATwo参数声明为外部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;