안녕하세요.
activeX component를 사용하다가 잘 모르는 것이 있어서요~
보통 C에서 함수의 인자에 배열을 넘길때는 이런 식으로 하잖아요~
void functionName(double* arg1)
activeX에 위와 같은 method가 있는데 델파이에 install시켜서 사용하면
procedure ProcedureName(var arg1 : double);
처럼 나오더라구요
이렇게 되어 있을때 함수에 어떤식으로 배열 인자를 전달해야 되나요?
예를 들어서...
procedure test1;
var
temp : array [0..2] of double;
begin
ProcedureName(temp);
end;
이런식으로 했더니 에러가 나더군요.
그래서, ProcedureName(temp[0]); 로 하면 에러는 안나는데...
제대로된 실행 결과가 나오지 않는 것 같아서요.
이번기회에 확실히 알고 싶기도 하고요.
답변 부탁드립니다.
> 안녕하세요.
> activeX component를 사용하다가 잘 모르는 것이 있어서요~
> 보통 C에서 함수의 인자에 배열을 넘길때는 이런 식으로 하잖아요~
> void functionName(double* arg1)
> activeX에 위와 같은 method가 있는데 델파이에 install시켜서 사용하면
> procedure ProcedureName(var arg1 : double);
> 처럼 나오더라구요
> 이렇게 되어 있을때 함수에 어떤식으로 배열 인자를 전달해야 되나요?
> 예를 들어서...
> procedure test1;
> var
> temp : array [0..2] of double;
> begin
> ProcedureName(temp);
> end;
> 이런식으로 했더니 에러가 나더군요.
>
> 그래서, ProcedureName(temp[0]); 로 하면 에러는 안나는데...
> 제대로된 실행 결과가 나오지 않는 것 같아서요.
> 이번기회에 확실히 알고 싶기도 하고요.
> 답변 부탁드립니다.
Object pascal 의 open array 를 사용해 보세요.
아래와 같은 코드를 넣으면 배열을 바로 넘겨 줄 수 있습니다.
참고로 Low() 와 High() 는 이때 배열 첨자의 제일
처음과 끝을 알려 줍니다..
procedure ProcedureName(var arg1 : array of double);
var
i : Integer;
begin
for i := Low( arg1 ) to High( arg1 ) do begin
ShowMessage( FloatToStr(arg1[i]) );
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
temp : array [0..2] of double;
begin
temp[0] := 1.1;
temp[1] := 1.2;
temp[2] := 1.3;
ProcedureName(temp);
end;