我有一个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
它可能是什么?感谢
答案 0 :(得分:2)
您的代码中有几处错误。
主要原因是您的最终end
后跟.
而不是;
。 end.
表示单元的结尾,但您尚未终止function RandomRange
或事件处理程序TForm1.FormCreate
的方法块。
这两个警告是因为您没有使用这些参数。 :-)您将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
;它可能在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;