2016-08-04 7 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

もう1つの可能性は、ファンクションの結果を使用することです。 function GetRandomNumber; begin 結果:=ランダム; end; プロシージャTForm1.ButtonClick(送信者:TObject); var x:整数。 begin x:= 0〜9の場合、SetLength(MyArray、10) MyArray [x]:= GetRandomNumber(); end; – mezen

関連する問題