2012-05-30 68 views
0

我有一個RandomRange問​​題,這是代碼:拉撒路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

是什麼讓你覺得這是除了*正是編譯器跟你說什麼*是? –

回答

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中,RandomRangemath單元中定義;它可能與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; 
+0

unit1.pas(52,24)錯誤:找不到標識符「RandomRange」 unit1.pas(64,1)致命:語法錯誤,「BEGIN」預期但找到「END」 –

+0

請參閱我的編輯(最後一段添加到我的回答)。 –

+0

謝謝,它現在好了,但我仍然有一個錯誤:unit1.pas(67,1)致命:語法錯誤,「BEGIN」預期但發現「END」 –