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

또 다른 가능성은 funciton의 결과를 사용하는 것입니다. function GetRandomNumber; begin 결과 : = 임의; 끝; 프로 시저 TForm1.ButtonClick (보낸 사람 : TObject); var x : 정수; begin x : = 0에서 9까지 SetLength (MyArray, 10) MyArray [x] : = GetRandomNumber(); 끝; – mezen

관련 문제