2016-08-04 87 views
4

如何將單個元素的數組傳遞給過程?

procedure TForm1.ButtonClick(Sender: TObject); 
var x:integer; 
begin 
    SetLength(MyArray,10) 
    for x:=0 to 9 do FillWithRandomNumbers(MyArray[x]); 
end; 

Procedure FillWithRandomNumbers(var MyArray: Array of double); 
begin 
    MyArray:=Random; //<-I have no idea what to do here :(
end; 

正如你可以看到我想要單個元素傳遞給程序,以執行對指定數組單元的一些任務。例如,程序FillWithRandomNumbers應該使用MyArray [2]並用隨機數填充該單元格。

回答

4

您想要傳遞一個數組元素,但您的過程需要一個完整的數組。直接回答您的實際問題,你的程序應該被定義爲:

Procedure FillWithRandomNumber(var Value: double); 
begin 
    Value:= Random; 
end; 

procedure TForm1.ButtonClick(Sender: TObject); 
var x:integer; 
begin 
    SetLength(MyArray,10) 
    for x:=0 to 9 do FillWithRandomNumber(MyArray[x]); 
end; 

或者你可以不喜歡這樣,而不是:

procedure TForm1.ButtonClick(Sender: TObject); 
begin 
    SetLength(MyArray, 10); 
    FillWithRandomNumbers(MyArray); 
end; 

Procedure FillWithRandomNumbers(var SomeArray: Array of double); 
var 
    X: Integer; 
begin 
    for X := Low(SomeArray) to High(SomeArray) do begin 
    SomeArray[X] := Random; 
    end; 
end; 

還是要更簡單,只是不使用全部程序:

procedure TForm1.ButtonClick(Sender: TObject); 
var 
    X: Integer; 
begin 
    SetLength(MyArray, 10); 
    for X := 0 to High(Array) do begin 
    MyArray[X]:= Random; 
    end; 
end; 
+0

是的我知道它可以做得更簡單。這只是一個極端簡單的例子。 謝謝你的第一個解決方案。 –

+0

另一種可能性是使用函數的結果: 函數GetRandomNumber;開始 結果:=隨機; 結束; procedure TForm1.ButtonClick(Sender:TObject); var x:integer; SetLength(MyArray,10) for x:= 0 to 9 do MyArray [x]:= GetRandomNumber(); 結束; – mezen

相關問題